Intake job maps through the shared engine, with team-member assignment
LeadIntakeProcessingJob builds each lead with kamo-shared-library's LeadRequestMapper instead of its own field switch and transform copy, so automated imports a...
Manual imports and the intake backlog through the shared mapping engine
LeadImportController maps every row with kamo-shared-library's LeadRequestMapper instead of its own switch, so manual and template imports get the full field se...
One mapping engine for lead imports, with team-member assignment
Manual imports, automated (intake) imports and the backlog each carried their own copy of the mapping code, and they disagreed: date, regex and split transforma...
Call and meeting options on an AI member's voice card (SP92 calls)
Under the AI member's voices in the profile's Identity room: "Transfer callers to a person when they ask for an agent or a human" (on), "Keep full call and meet...
V7 — which colleague is calling from an internal extension (SP92 calls)
GET **************** (KAMOAI_INTERNAL_SECRET) answers the active member of the phone server's org that the extension is ACTIVE-ly assigned to, or 404 NO_MEMBER....
An AI member's call and meeting options, beside its voices (SP92 calls)
keywordTransfer (default on), keepFullTranscript (default off) and meetingMode COMPANION | CONVERSATION (default COMPANION), in ai_member_call_options (hand-app...
MEETING_COMPLETED run trigger, for a conversation meeting's follow-up (SP92 calls)
A meeting an AI member took part in as a conversation partner wakes it once it ends, with its transcript note, the way a phone call's CALL_COMPLETED does. STRIN...
The Org Chart tab on Essential Setup, in the settings menu, on the Settings landing page and on the home admin bar (KamoCollab CP02 T24)
**************** mounts OrgChartPanel after Teams: who reports to whom across the organization, read-only, from GET /api/security/org-chart (new BFF relay, forw...
Teams on the member card and in the directory (KamoCollab CP01 T25)
The member card shows a team member's teams under their title and department: up to three chips in the server's order, then "+n", whose tooltip names the rest. ...
The charter model for the ORG layer, PERSONALITY and DocsTION — the vocabulary, the twelve item columns, the org charter item, org archetypes and their repositories; validation still refuses the new sections (KamoCollab CP03 T7)
CharterLevel appends ORG after CP01's TEAM; CharterRule appends TRAIT and COLLAB; CharterSection appends PERSONALITY (TRAIT, 160) and DocsTION (COLLAB, 60), bot...
The mirror knows PERSONALITY and DocsTION (hidden until CP09), the ORG level and the resolved personality and Docstion types (KamoCollab CP03 T21)
- sections.ts: SectionSpec.editor; the two sections appended with editor false; TRAIT and COLLAB rules; sectionsInBand lists only edited sections; MAX_ITEMS_P...
Teams on the create-member form, for a person and for an AI hire (KamoCollab CP01 T24A)
/settings/team-member/new gains Teams on its Role card: a multiple pick over the organization's teams (the teams client), offered to whoever could change a memb...
Tendency links — integer derive, the minimal-move inverse with the two-term carry, and the two gates (KamoCollab CP03 T5)
Weakness tendencies are "own controls, linked and option to be fully independent" (owner decision 6). TendencyLinks.LINKS holds the seven links of CP03 spec §5....
A member's teams on the profile's Position card, saved to the member-side route, and the waterfall hint names teams (KamoCollab CP01 T24)
The Position card gains Teams under the job title: chips for every viewer of the card, a multiple pick over the organization's teams for a security administrato...
The 60-key trait registry, the group defaults and the Docstion vocabulary (KamoCollab CP03 T4)
PersonalityTraitKey carries a TraitSpec per key (family, type, range, default, choices, linked keys, UI group, unit, adaptability, label keys), REGISTRY_VERSION...
The hand-applied DDL for the charter ORG layer, the personality and Docstion columns and org archetypes, and its contract test (KamoCollab CP03 T2)
Spec §5.1's block, character for character: the twelve nullable trait/collab columns on the five charter owner tables, org_charter_items (cascading with its org...
The Teams tab on Essential Setup, in the settings menu, on the Settings landing page and on the home admin bar (KamoCollab CP01 T23)
/settings/essential?tab=teams mounts TeamManager after Job titles, with its help column (purpose, features with the rights waterfall, best practices, the charte...
TeamManager's team dialog — name, timeout, members and lead, description and charter, roles and rights, saved in one call (KamoCollab CP01 T22)
Add Team, each row's Edit and the empty state's call to action open one dialog: the name, the session timeout, the members (chips, and the member picker opened ...
The visible listing's inputs come from the org graph — subordinates, AI supervisees and AI members as id strings; the manager and AI supervisor pairs are gone (KamoCollab CP02 T15)
**************** now takes the caller and reads the organization's org graph from the 60 s cache (orgGraphCache.get): - subordinateMemberIds = reports(caller, t...
TeamManager, the teams table — rows, load states and delete (KamoCollab CP01 T21)
The Teams tab's table (spec §5.10, D22), as JobTitleManager lists job titles: team (title and the description's first line), members, lead, requirements, associ...
The manager line reads the org graph — cycle checks on a fresh graph, the directory on the cached one, and a member's own manager needs MANAGE_MEMBER_SECURITY to change (KamoCollab CP02 T12)
- MemberSecurityController: rejectManager keeps the self, org and record-active refusals and tests the loop with **************** the ten-level bound goes. ...
The teams client — types, TeamsApiError and the ten calls over the team relays (KamoCollab CP01 T20)
app/lib/teams/teamsApi.ts: Team, TeamDetail, TeamMemberRow, TeamRef, TeamWrite, TeamSaved; parseTeam (tolerant: ids as strings, missing lists [], a right whose ...
The charter client knows TEAM, and the BFF relays teams (KamoCollab CP01 T19)
CharterLevel gains TEAM and CharterSubject a hypothetical member's teamIds; saveLayer('TEAM') PUTs **************** Two relays: /api/security/teams/** (GET, POS...
Reports read the org graph — a TEAM scope and a TEAM share reach the whole subtree, supervised AIs included (KamoCollab CP02 T11)
ReportScopeResolver.reportsTo is reports(member, true) of the cached graph: transitive and unbounded (the old walk stopped after ten levels), following the repo...
Teams at member creation — teamIds on create-team-member, checked before anything is written, joined inside the creation transaction before the first applied rights, announced after the commit (KamoCollab CP01 T14A)
POST **************** (and the /create and /bulk-create paths that share MemberCreationService.create) take an optional teamIds for a person or an AI (master R1...
The access log filter offers impersonation and Enter-As (KamoCollab CP00 T11)
SecurityService now writes IMPERSONATION_STARTED, IMPERSONATION_ENDED and ENTER_AS into the org's access log. The event-type list (accessLogEvents.ts, which the...
SecurityService's chat policy reads member facts from the org graph, a graph loaded per snapshot (KamoCollab CP02 T10)
ChatPolicyBeanConfig builds ChatPolicySnapshotLoader with the graph constructor and orgGraphCache::fresh (ruling CP02-T17-3), as MediaService does, so the roste...
Every SecurityService graph write announces the change, the team seam listens, and a ratchet keeps it so (KamoCollab CP02 T8)
Each write path of CP02 spec §3.5 (W1-W15) calls **************** cause) with §5.4.2's causes: member security (roles, department, job title, manager, level, ow...
Teams on the member card and in the directory search — [{id, title}] by title, one team read per page (KamoCollab CP01 T16)
GET /api/security/members/{id}/card names a team member's teams ([] in no team; left out when the read fails, as on the profile). GET **************** gives eac...
Teams in the effective-rights views — the diagnostics cascade's teams level, and Team: sources on the applied rights (KamoCollab CP01 T15)
The diagnostics cascade (GET **************** lists a team member's teams between the job title and the member, {teamId, title, roles, rights}, in the waterfall...
A member's teams from the profile — GET|PUT **************** and teams on the profile and the security view (KamoCollab CP01 T14)
PUT **************** — a team's charter-only save through TeamWriter, announced after the commit (KamoCollab CP01 T13)
The team charter endpoint of spec §5.6/§5.7 on LayerCharterController, beside the role, department and job-title ones: CONFIGURE_SYSTEM or god; the path id, unk...
The TEAM charter layer — a member's teams after the job title, the TEAM subject, teamIds, and team hide markers (KamoCollab CP01 T12)
A member's teams become TEAM layers between the job title and the member, all at one rank and ordered by lower-case title then id; the teams' roles join the ROL...
"Calls from AI team members" on one's own profile (SP95 T27)
A person's profile gains a card in its Work room: whether their organization's AI team members may phone them, and on which of their numbers. The switch turns a...
"Calls from AI team members" on one's own profile (SP95 T27)
A person's profile gains a card in its Work room: whether their organization's AI team members may phone them, and on which of their numbers. The switch turns a...
The team sub-resources (members, rights, roles) and the recalculation endpoint (KamoCollab CP01 T11)
GET|PUT **************** /rights and /roles, and POST **************** (spec §5.7). Reads are open to any session of the org; writes need CONFIGURE_SYSTEM or an...
SP96 the AI voice card on the profile, and the charter's VOICE section without the TTS pin
An AI member's Identity room gains its voice card: one line per speech model it may use, in the order it tries them, with the voice it speaks there now and how ...
SP96 the AI voice card on the profile, and the charter's VOICE section without the TTS pin
An AI member's Identity room gains its voice card: one line per speech model it may use, in the order it tries them, with the voice it speaks there now and how ...
The brief leads a team's purpose with the team's name (KamoCollab CP01 T17)
A TEAM PURPOSE line now reads "As a member of the {title} team: ", after the job title, like the ROLE, DEPARTMENT and JOB_TITLE leads. VERSION stays (D19): no b...
TeamController — list, create, read, update and delete (KamoCollab CP01 T10)
GET|POST /api/security/teams and GET|PUT|DELETE /api/security/teams/{id} (spec §5.7). Every handler resolves the caller first (401 without an org); reads are op...
The internal DM path goes through chat policy and the AI turn guard, and every chat line says who wrote it (KamoCollab CP00 T7)
POST **************** now requires source MEMBER or SYSTEM (else 400 SOURCE_REQUIRED). A MEMBER line is checked by chat policy as a member's own send (open-then...
SP96 hire form asks an AI's sex and lets the hire leave out its phone extension or workstation; people get an optional sex; the checklist's Set up now (SP96 T18)
- AI hire: a required Female/Male select (the hire button waits for it), and Phone extension / Workstation switches, both on; the payload always sends aiPho...
SP96 hire form asks an AI's sex and lets the hire leave out its phone extension or workstation; people get an optional sex; the checklist's Set up now (SP96 T18)
- AI hire: a required Female/Male select (the hire button waits for it), and Phone extension / Workstation switches, both on; the payload always sends aiPho...
MediaService caches the org graph, reads chat policy facts from it, and the managed tracking scope is the whole subtree (KamoCollab CP02 T17)
MediaService declares the org graph loader and its 60 s cache, and a listener on security.orggraph.changed.* that evicts the graph and then the chat policy snap...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
