Skip to content
KAMOUniverse

Changelog

What's new.

Every improvement to the platform, as it ships.

  1. · KBService

    The supervisor memory review and its content gate — GET **************** for a person who supervises the SI (SupervisorGate: VIEW_NOTES, 403 HUMAN_ONLY for an SI session by its own intelligenceType or member row, SUPERVISE_AI_MEMBERS, 404 for anyone but a supervisee), at most 25 rows newest first: CARDS on the SI's live cards (kind, q in the topic key, cardCount), LABELLED on ix_notes_member_updated (its notes but cards and its maste...

  2. · kamo-internal

    The setup assistant's conversation and the SI hire wizard's Describe step — ConfigureConversation streams the assistant's text into a polite live region with a progress chip per tool kind, the checked draft's counts, its question (choices, an own answer, Decide for me), a follow-up field, Stop (discards the session, keeps the last checked draft) and every failure by its reason with Retry; DescribeStep drafts from 20 to 8,000 characters, loads the draft (K5) on DRAFTED and stays with the summary ...

  3. · APIService

    KamoCameras connector — /api/cameras/agent/** enrollment and the /ws/cameras/agent relay

  4. · MCPGatewayService

    CRM, document, calendar, call and notification reads name their records — each lead, account, contact and document by its id, each event (an occurrence by its series) and meeting as its CALENDAR_EVENT, each call row by its callLogId (none: unlabeled), each notification as the record it is about when its source is one; in an EXTERNAL or MIXED run of an ENFORCE org leads_get asks for the lead's external projection (fieldAudience=EXTERNAL); federated and workstation reads are one unlabeled item; Co...

  5. · SecurityService

    /api/security/cameras relay to KamoCameraService with rights, org stamping and org-chart facts

  6. · KBService

    The SI knowledge context bundle — GET /api/notes/ai/context?noteIds= (an SI member's own session only, 403 AI_ONLY for a person whatever header; VIEW_NOTES; at most 8 ids, else 400 VALIDATION field noteIds) answers, in one read-only transaction over the SI's NoteAudience, Our Master Note when its plain text is not blank; the knowledge notes: the charter's ids in order through the visible finder, then the pinned TEAM notes of its teams, then the pinned DEPARTMENT notes on its department path (new...

  7. · kamo-internal

    The personality panel — PersonalityPanel (the section title, the toolbar and the cards Archetype, Voice, Interpersonal, Drive, Judgment, Sensitivities, Work style, Thresholds, Social style, Strengths and Other settings, each collapsible with N set here and Reset group to inherited), PersonalityToolbar (search by translated labels and choices, only changed, expand and collapse all, capacity, the registry banner), ArchetypePicker, ProseText and OtherSettingsCard; ships dark until Task 19 (KamoColl...

  8. · RAGService

    A member's search finds the shared notes their labels clear them for — the requester's facts from the org graph (teams, department path, effective level) drive CP07's member clause in the default notes branch, the org-graph listener evicts on security.orggraph.changed, and INHERITED labels are read (KamoCollab CP11 Task 7, defect 10)

  9. · kamo-internal

    The configure client, the stream relay and the BFF relays — readSse parses the SI configure assistant's event stream across chunk boundaries (ping dropped, a cut frame dropped), configureApi starts, answers, reads and discards a session (a stream cut before done reads MODEL_FAILED), reads a draft, records an assisted save (K6), checks one supervisor (K3) and lists voices (V1); draftModel loads a draft into the hire Review and builds the create body (no charterItems without the right to write the...

  10. · kamo-internal

    The information's owner decides an SI's held message — a request to share opens its approver's release form ('<SI> wants to send this to <recipients>', the draft editable as on any approval, the records it draws on as chips, Share / Don't share, no comment), anyone else reads it redacted ('Waiting for the information's owner', no draft, summary or approver), and an approved action answered by a further approval reads 'Passed on for a further approval' instead of Done (KamoCollab CP07 Task 40)

  11. · MCPGatewayService

    Notes, tasks, KB and RAG reads name their records — each listed or read note is its NOTE, each task its TASK, each article its KB_ARTICLE by the row id (the output's articleId stays the guid), each RAG passage its note or article and each link target its article; in a filtered run of an ENFORCE org rag_search narrows the search to the run's audience from its context and the org graph (audienceMembers, audienceExternal), never the model's choice, and the audience filter still drops what RAGServic...

  12. · KBService

    SI memory is labelled INHERITED, and a second Confidential setter keeps the narrower — an AI_MEMORY card or AI_JOURNAL day of an ARTIFICIAL owner, kept personal and learned from at least one record, is INHERITED (its audience the intersection of its LEARNED_FROM sources; participant and owner the SI, sensitivity and marker the note's), every other note as CP05 and CP07 label it; on every SI label-field path (note create and update, journal and section appends, the card writer) LabelSetters.highe...

  13. · RAGService

    Each link target names its article's row id as articleId, the KB_ARTICLE record the Tool Plane labels (KamoCollab CP07 Task 19)

  14. · SecurityService

    An SI's hire saves its own charter and the assistant's provenance, and K6 POST **************** records a "Describe a change" save — charterItems validated (CharterItems.validate at MEMBER, CharterReferenceValidator) before any write and seeded by MemberCharterSeeder in the creation transaction after the teams and before the rights, 403 MISSING_RIGHT (field charterItems) without MANAGE_MEMBER_SECURITY and MANAGE_AI_WORKFORCE, 400 CHARTER_INVALID, 400 for a person'...

  15. · KBService

    The SI memory card store — POST/GET /api/notes/memory/cards, DELETE **************** and GET /api/notes/memory/journal, an SI member's own session only (403 AI_ONLY for a person whatever header; the member row decides when the session names no intelligenceType); a card is an AI_MEMORY note (SI processing on, PERSONAL, the SI's member key, ABOUT and LEARNED_FROM links) plus its note_memory_cards row; recording a topic the SI keeps merges (version kept, links only added, label only...

  16. · kamo-internal

    Share a note — who sees it, a check before sharing, and the notice when Enforce warns; Share and Supersede on a decision; the document share's notice; "Record a decision…" from a chat, a mail thread, a call and a meeting (KamoCollab CP05 T39)

  17. · kamo-internal

    The trait controls — TraitRow (a slider over the band the levels above allow, drawn on the whole scale; a number field with units for NUMBER keys, ESCALATE_AFTER_BLOCKED_MINUTES stepping by 5), TraitChoice (toggle group up to three choices, a select above), TraitProvenance, TraitRowFrame (Reset, Override here, lock and Limits above MEMBER, the note) and BandTrack; a band of one value is a disabled slider, an own value outside the band shows Kept at (KamoCollab CP09 Task 12)

  18. · MCPGatewayService

    Chat, mail and SMS reads name their records — every listed or read conversation is its CHAT_SESSION (a support conversation too), every message its EMAIL_THREAD by the threadKey mail summaries and full reads now carry (none: unlabeled), every text conversation its SMS_THREAD; the nine tools leave PENDING_ITEMS, and a result of a tool that names its items but named none (an empty list) is no withheld record (KamoCollab CP07 Task 18)

  19. · InitializerService

    Scan com.kamo.z.shared.cameras so the KamoCameras tables are created

  20. · kamo-shared-library

    KamoCameras entities and repositories (schema camera)

    Sites, device-code enrollments, go2rtc config history, camera systems, cameras, groups, access rules and saved layouts. Tables are created by KamoInitializerService from these entities; KamoCameraService is the only writer.

  21. · RAGService

    Index owner-less notes, keep SI memory cards out of every search but the SI's own

    KamoCollab CP11 Task 6 (spec 5.6, D29). note.rag.upsert names the note's owner, absent for Our Master Note: such a note, or one its label shares, is indexed with no memberId on its points, its embedding record kept under actorMemberId. Points carry noteCategory and masterScope (keyword indexes ensured at startup beside CP07's). Every search leaves noteCategory AI_MEMORY out of its notes branch; the session body noteCategory AI_MEMORY + ownNotesOnly true searches exactly the caller's own cards. A ratchet pins the point kinds to kb_article and note.

  22. · kamo-internal

    Retiring an SI asks what happens to its workstation — Delete now, Delete after N days (default 7, 1-365) or Keep; a retired SI's profile shows the pending deletion date or 'kept' with Delete now and Keep; the Computers tab marks a pending deletion and offers Keep and Delete now

    Owner decision 2026-10-11. AiRetireWorkstationChoice sits inside the retire confirmation (ConfirmationDialog gains a content slot and confirmDisabled): hidden for an SI without a workstation, Keep by default, the deletions disabled with the reason for a viewer without MANAGE_HOSTED_COMPUTERS, and the confirm held while the day count is not a whole number from 1 to 365. The choice goes to POST /members/{id}/ai/retire; when the retire commits but the choice is not applied, the admin is told the workstation was kept. RetiredWorkstationNotice (on the retired SI's State field) reads GET /members/{id}/ai/workstation live on hosted-computers and ai-workforce changes; Delete now (named back) and Keep go through the new BFF relay POST **************** as do the Computers tab's Keep and its Delete on a pending row, so the choice is recorded. accessLogEvents gains AI_WORKSTATION_AUTO_DELETED.

  23. · SecurityService

    Retiring an SI takes the admin's choice for its workstation — Delete now, Delete after N days, or Keep

    Owner decision 2026-10-11. POST /members/{id}/ai/retire accepts {workstation: KEEP|DELETE_NOW|DELETE_AFTER, deleteAfterDays: 1-365, default 7}; no body or no workstation is KEEP, so every caller that predates the choice behaves as before. A deleting choice also needs MANAGE_HOSTED_COMPUTERS (the Computers tab's Delete right), checked before anything is retired; a bad choice is a 400 naming the field. The choice is named in the AI_RETIRED audit row and sent to ComputeService only AFTER the retire committed (RetiredWorkstationRelay): a failure leaves the workstation kept and the answer's workstationChoice.applied false. GET /members/{id}/ai/workstation lists the SI's workstations with their pending deletion (for whoever may retire it or manage computers; canManage says whether Delete now and Keep are theirs), and POST **************** is that Delete now / Keep, behind MANAGE_HOSTED_COMPUTERS.

  24. · kamo-shared-library

    A retired SI's workstation carries the admin's choice — retire_disposition (KEEP, DELETE_NOW, DELETE_AFTER) and delete_after, written only by their own UPDATE (updatable = false, like the AI session columns, so a sweep's stale save cannot undo it); RetireChoice parses and validates it (none = KEEP, DELETE_AFTER 1-365 days, default 7); findDueForDeletion reads only due rows through the partial index, oldest first, LIMITed; AccessLogEventType gains AI_WORKSTATION_AUTO_DELETED

    Owner decision 2026-10-11: at retire the admin chooses Delete now, Delete after N days or Keep. The columns and ix_hosted_computer_delete_after were applied by hand first (computeservice ****************

  25. · kamo-internal

    SI members' structured task comments — a position as a chip with its stance, a hand-off as a card, an escalation with a link to the decision task — and the charter mirror's daily message cap per SI colleague (KamoCollab CP12 T36)

    - TaskCommentsThread: POSITION shows "Position · Proposes|Agrees|Disagrees" above the text; HANDOFF a "Hand-off" card holding the packet; ESCALATION "Escalated to a person" with "Open the decision task" when the viewer can see it; a kind or stance this client does not know reads as a comment - the decision task is found among the tasks linked TASK:<this task>, created by the escalating SI within a minute of the comment, asked only when the thread holds an escalation (CP12-T36-1) - types: TaskComment.kind / stance (TaskCommentKind, PositionStance) - charter: LIMIT_KEYS gains maxAiPairMessagesPerDay (1-1000, whole); LIMIT maxItems is LIMIT_KEYS.length (R1-8), never a literal - charterSectionParity reads CharterLimitKey: LIMIT's cap as values().length, and every mirror key with the server's bounds in the server's order (CP12-T36-2)

  26. · kamo-internal

    The Decisions view — decisions and summaries filtered by kind and status, a page at a time, with who decided, when in effect, the audience and what each is based on, and Revoke for the owner or decider; "Record a decision" opened from anywhere by openDecisionDialog({sources}); a note's scope chip (team and department by name, sensitivity, Confidential, and whose note it is) on the wall and in the editor; a restricted source shown as "Derived from / Learned from a restricted source"; a note someo...

  27. · kamo-internal

    Requests to share reach the information's owner — DISCLOSURE_REQUESTED after APPROVAL_DECIDED with no right and its own share icon; the Interaction Center's Approvals tab opens for a member without SI rights while a request to share waits for them (scope disclosure), every DISCLOSURE row wears 'Release request' and a redacted one reads 'Waiting for the information's owner'; the Disclosure tab names what is missing when Enforce is refused as not ready (KamoCollab CP07 Task 39)

  28. · RAGService

    A session search can be narrowed to what its audience may read

    POST /api/rag/search on the session path takes audienceMembers (at most 50) and audienceExternal and ANDs, per member, the four ways a member may read a point (own legacy note, allowedMembers, a label that covers them, a KB article of their tier), and a public article for an external. The filter without an audience is byte-identical; link targets narrow to the least-entitled reader. KamoCollab CP07 Task 13.

  29. · kamo-internal

    The Team view in the SI workforce hub — for the SIs and people who report to the viewer, open asks (the SIs' questions to people and the contact requests the viewer decides), messages held for later, blocked tasks the viewer can open, and consults between SIs of the last 7 days; who and when only, each row opening the SI's room, the task drawer or the contact request (KamoCollab CP12 T35)

  30. · kamo-internal

    The view model and the draft resolve hook — view.ts joins a layer's draft with its inherited and effective resolves (allowed bands, inherited locks, provenance, clamps, tendencies with their write-through and disagreement cause, groups, adaptations, Docstion models with looserThanInherited), archetypeProfile resolves an archetype draft in the client, search and prose helpers, usePersonalityDraft keeps only the newest answer for the current draft (effective view 400 ms after the last change)...

Your universe is waiting.

Start free in minutes. Add products whenever you are ready — no migration, no new logins.

Free forever — no credit card required