rolexjs 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/render.ts","../src/product-render.ts","../src/project-render.ts","../src/rolex.ts","../src/renderers/index.ts","../src/renderers/inspect.ts","../src/renderers/org.ts","../src/renderers/position.ts","../src/renderers/product.ts","../src/renderers/project.ts","../src/renderers/role.ts","../src/renderers/society.ts","../src/renderers/survey.ts"],"sourcesContent":["/**\n * rolexjs — RoleX unified entry point.\n *\n * Usage:\n * import { createRoleX } from \"rolexjs\";\n *\n * const rx = createRoleX({ platform });\n * const role = await rx.individual.activate({ individual: \"sean\" });\n * await role.want(\"Feature: Ship v1\", \"ship-v1\");\n */\n\n// Re-export core (structures, processes, Role, types)\nexport * from \"@rolexjs/core\";\n// Product Render\nexport type { ProductAction } from \"./product-render.js\";\nexport { renderProduct, renderProductResult } from \"./product-render.js\";\n// Project Render\nexport type { ProjectAction } from \"./project-render.js\";\nexport { renderProjectResult } from \"./project-render.js\";\n// API\nexport type { RoleXConfig } from \"./rolex.js\";\nexport { createRoleX } from \"./rolex.js\";\n","/**\n * Render — 3-layer output for all Rolex operations.\n *\n * Layer 1: Status — what just happened (describe)\n * Layer 2: Hint — what to do next (hint + cognitive hint)\n * Layer 3: Projection — full state tree as markdown (renderState)\n *\n * render() composes the 3 layers. MCP and CLI are pure pass-through.\n */\nimport type { Permission, State } from \"@rolexjs/system\";\n\n// ================================================================\n// Description — what happened\n// ================================================================\n\nconst descriptions: Record<string, (name: string, state: State) => string> = {\n // Lifecycle\n born: (n) => `Individual \"${n}\" is born.`,\n found: (n) => `Organization \"${n}\" is founded.`,\n establish: (n) => `Position \"${n}\" is established.`,\n charter: (n) => `Charter defined for \"${n}\".`,\n charge: (n) => `Duty \"${n}\" assigned.`,\n retire: (n) => `\"${n}\" retired.`,\n die: (n) => `\"${n}\" is gone.`,\n dissolve: (n) => `Organization \"${n}\" dissolved.`,\n abolish: (n) => `Position \"${n}\" abolished.`,\n rehire: (n) => `\"${n}\" is back.`,\n\n // Organization\n hire: (n) => `\"${n}\" hired.`,\n fire: (n) => `\"${n}\" fired.`,\n appoint: (n) => `\"${n}\" appointed.`,\n dismiss: (n) => `\"${n}\" dismissed.`,\n\n // Project\n launch: (n) => `Project \"${n}\" launched.`,\n scope: (n) => `Scope defined for \"${n}\".`,\n milestone: (n) => `Milestone \"${n}\" added.`,\n achieve: (n) => `Milestone \"${n}\" achieved.`,\n enroll: (n) => `\"${n}\" enrolled.`,\n remove: (n) => `\"${n}\" removed.`,\n deliver: (n) => `Deliverable \"${n}\" added.`,\n wiki: (n) => `Wiki entry \"${n}\" added.`,\n archive: (n) => `Project \"${n}\" archived.`,\n produce: (n) => `Product \"${n}\" produced.`,\n\n // Product\n strategy: (n) => `Strategy defined for \"${n}\".`,\n spec: (n) => `Spec \"${n}\" added.`,\n release: (n) => `Release \"${n}\" published.`,\n channel: (n) => `Channel \"${n}\" added.`,\n own: (n) => `Owner assigned to \"${n}\".`,\n disown: (n) => `Owner removed from \"${n}\".`,\n deprecate: (n) => `Product \"${n}\" deprecated.`,\n\n // Society\n crown: (n) => `\"${n}\" crowned — sovereign permissions granted.`,\n uncrown: (n) => `\"${n}\" uncrowned — sovereign permissions revoked.`,\n\n // Top-level perception\n inspect: (n) => `Inspecting \"${n}\".`,\n\n // Role\n activate: (n) => `Role \"${n}\" activated.`,\n focus: (n) => `Focused on goal \"${n}\".`,\n\n // Execution\n want: (n) => `Goal \"${n}\" declared.`,\n plan: (n) => `Plan created for \"${n}\".`,\n todo: (n) => `Task \"${n}\" added.`,\n finish: (n) => `Task \"${n}\" finished → encounter recorded.`,\n complete: (n) => `Plan \"${n}\" completed → encounter recorded.`,\n abandon: (n) => `Plan \"${n}\" abandoned → encounter recorded.`,\n\n // Cognition\n reflect: (n) => `Reflected on \"${n}\" → experience gained.`,\n realize: (n) => `Realized principle from \"${n}\".`,\n master: (n) => `Mastered procedure from \"${n}\".`,\n\n // Knowledge management\n forget: (n) => `\"${n}\" forgotten.`,\n};\n\nexport function describe(process: string, name: string, state: State): string {\n const fn = descriptions[process];\n return fn ? fn(name, state) : `${process} completed.`;\n}\n\n// ================================================================\n// Hint — what to do next\n// ================================================================\n\nconst hints: Record<string, string> = {\n // Lifecycle\n born: \"hire into an organization, or activate to start working.\",\n found: \"define a charter for the organization.\",\n establish: \"charge with duties, then appoint members.\",\n charter: \"establish positions for the organization.\",\n charge: \"appoint someone to this position.\",\n retire: \"rehire if needed later.\",\n die: \"this individual is permanently gone.\",\n dissolve: \"the organization no longer exists.\",\n abolish: \"the position no longer exists.\",\n rehire: \"activate to resume working.\",\n\n // Organization\n hire: \"appoint to a position, or activate to start working.\",\n fire: \"the individual is no longer a member.\",\n appoint: \"the individual now holds this position.\",\n dismiss: \"the position is now vacant.\",\n\n // Project\n launch: \"define scope, add milestones, or enroll members.\",\n scope: \"add milestones to break down the project.\",\n milestone: \"enroll members and start working.\",\n achieve: \"continue with remaining milestones, or archive the project.\",\n enroll: \"assign milestones and start working.\",\n remove: \"the individual is no longer a participant.\",\n deliver: \"deliverable recorded.\",\n wiki: \"knowledge entry recorded.\",\n archive: \"the project is archived.\",\n produce: \"define strategy, add specs, or assign an owner.\",\n\n // Product\n strategy: \"add behavior specs (BDD contracts) for the product.\",\n spec: \"add more specs, or publish a release.\",\n release: \"add distribution channels, or continue adding specs.\",\n channel: \"distribution channel recorded.\",\n own: \"the individual is now the product owner.\",\n disown: \"the individual is no longer the product owner.\",\n deprecate: \"the product is deprecated.\",\n\n // Society\n crown: \"the individual now has sovereign permissions over society.\",\n uncrown: \"the individual no longer has sovereign permissions.\",\n\n // Top-level perception\n inspect: \"use inspect on child nodes for deeper detail, or activate to work as a role.\",\n\n // Role\n activate: \"want a goal, or check the current state.\",\n focus: \"plan how to work toward it, or add tasks.\",\n\n // Execution\n want: \"plan how to work toward it.\",\n plan: \"add tasks with todo.\",\n todo: \"start working, finish when done.\",\n finish: \"continue with remaining tasks, or complete the plan.\",\n complete: \"reflect on encounters to gain experience.\",\n abandon: \"reflect on encounters to learn from the experience.\",\n\n // Cognition\n reflect: \"realize principles or master procedures from experience.\",\n realize: \"principle added.\",\n master: \"procedure added.\",\n\n // Knowledge management\n forget: \"the node has been removed.\",\n};\n\nexport function hint(process: string): string {\n const h = hints[process];\n return h ? `Next: ${h}` : \"What would you like to do next?\";\n}\n\n// ================================================================\n// Detail — longer process descriptions (from .feature files)\n// ================================================================\n\nimport { directives, processes, world } from \"@rolexjs/core\";\n\n/** Full Gherkin feature content for a process — sourced from .feature files. */\nexport function detail(process: string): string {\n return processes[process] ?? \"\";\n}\n\n/** World feature descriptions — framework-level instructions. */\nexport { world };\n\n// ================================================================\n// Directive — system-level commands at decision points\n// ================================================================\n\n/** Get a directive by topic and scenario. Returns empty string if not found. */\nexport function directive(topic: string, scenario: string): string {\n return directives[topic]?.[scenario] ?? \"\";\n}\n\n// ================================================================\n// Generic State renderer — renders any State tree as markdown\n// ================================================================\n\n/**\n * renderState — markdown renderer for State trees.\n *\n * Rules:\n * - Heading: \"#\" repeated to depth + \" [name]\"\n * - Body: raw information field as-is (full Gherkin preserved)\n * - Links: \"> → relation [target.name]\" with target feature name\n * - Children: sorted by concept hierarchy, then rendered at depth+1\n * - Fold: when fold(node) returns true, render heading only (no body/links/children)\n *\n * Markdown heading depth caps at 6 (######).\n */\nexport interface RenderStateOptions {\n /** When returns true, render only the heading — skip body, links, and children. */\n fold?: (node: State) => boolean;\n /** When true, all links render as compact references (name + id only, no subtree). */\n compactLinks?: boolean;\n}\n\nexport function renderState(state: State, depth = 1, options?: RenderStateOptions): string {\n const lines: string[] = [];\n const level = Math.min(depth, 6);\n const heading = \"#\".repeat(level);\n\n // Heading: [name] (id) {origin} #tag [progress]\n const idPart = state.id ? ` (${state.id})` : \"\";\n const originPart = state.origin ? ` {${state.origin}}` : \"\";\n const tagPart = state.tags?.length ? ` ${state.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n const progressPart = state.name === \"goal\" ? goalProgress(state) : \"\";\n lines.push(`${heading} [${state.name}]${idPart}${originPart}${tagPart}${progressPart}`);\n\n // Folded: heading only\n if (options?.fold?.(state)) {\n return lines.join(\"\\n\");\n }\n\n // Body: full information as-is\n if (state.information) {\n lines.push(\"\");\n lines.push(state.information);\n }\n\n // Links — compact shows reference only, expanded shows full subtree\n if (state.links && state.links.length > 0) {\n const compactRelations = new Set([\"after\", \"before\", \"fallback\", \"fallback-for\"]);\n const allCompact = options?.compactLinks;\n const compact = allCompact\n ? state.links\n : state.links.filter((l) => compactRelations.has(l.relation));\n const expanded = allCompact ? [] : state.links.filter((l) => !compactRelations.has(l.relation));\n for (const link of compact) {\n const targetId = link.target.id ? ` (${link.target.id})` : \"\";\n const targetTag = link.target.tags?.length\n ? ` ${link.target.tags.map((t) => `#${t}`).join(\" \")}`\n : \"\";\n lines.push(`> ${link.relation}: [${link.target.name}]${targetId}${targetTag}`);\n }\n if (expanded.length > 0) {\n const targets = sortByConceptOrder(expanded.map((l) => l.target));\n for (const target of targets) {\n lines.push(\"\");\n lines.push(renderState(target, depth + 1, options));\n }\n }\n }\n\n // Children — sorted by concept hierarchy, empty nodes filtered out\n if (state.children && state.children.length > 0) {\n const sorted = sortByConceptOrder(state.children.filter((c) => !isEmpty(c)));\n for (const child of sorted) {\n lines.push(\"\");\n lines.push(renderState(child, depth + 1, options));\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Permissions — collect and render from link tree\n// ================================================================\n\n/** Recursively collect all permissions from a state tree's links. */\nexport function collectPermissions(state: State): Permission[] {\n const seen = new Set<string>();\n const result: Permission[] = [];\n\n const walk = (s: State) => {\n if (s.links) {\n for (const link of s.links) {\n if (link.permissions) {\n for (const p of link.permissions) {\n if (!seen.has(p.command)) {\n seen.add(p.command);\n result.push(p);\n }\n }\n }\n // Don't recurse into link targets — they are compact references\n }\n }\n if (s.children) {\n for (const child of s.children) {\n walk(child);\n }\n }\n };\n\n walk(state);\n return result;\n}\n\n/** Render permissions as a markdown section. */\nexport function renderPermissions(permissions: readonly Permission[]): string {\n if (permissions.length === 0) return \"\";\n\n const lines: string[] = [];\n lines.push(\"# Permissions\\n\");\n for (const p of permissions) {\n lines.push(p.content);\n lines.push(\"\");\n }\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Concept ordering — children sorted by structure hierarchy\n// ================================================================\n\n/** Concept tree order: identity → cognition → knowledge → execution → organization. */\nconst CONCEPT_ORDER: readonly string[] = [\n // Individual — Identity\n \"identity\",\n \"background\",\n \"tone\",\n \"mindset\",\n // Individual — Cognition\n \"encounter\",\n \"experience\",\n // Individual — Knowledge\n \"principle\",\n \"procedure\",\n // Individual — Execution\n \"goal\",\n \"plan\",\n \"task\",\n // Organization\n \"charter\",\n // Position\n \"position\",\n \"duty\",\n // Project\n \"scope\",\n \"milestone\",\n \"deliverable\",\n \"wiki\",\n // Product\n \"strategy\",\n \"spec\",\n \"release\",\n \"channel\",\n];\n\n/** Summarize plan/task completion for a goal heading. */\nfunction goalProgress(goal: State): string {\n let plans = 0;\n let plansDone = 0;\n let tasks = 0;\n let tasksDone = 0;\n\n function walk(node: State): void {\n if (node.name === \"plan\") {\n plans++;\n if (node.tags?.includes(\"done\") || node.tags?.includes(\"abandoned\")) plansDone++;\n } else if (node.name === \"task\") {\n tasks++;\n if (node.tags?.includes(\"done\")) tasksDone++;\n }\n for (const child of node.children ?? []) walk(child);\n }\n\n for (const child of goal.children ?? []) walk(child);\n if (plans === 0 && tasks === 0) return \"\";\n const parts: string[] = [];\n if (plans > 0) parts.push(`${plansDone}/${plans} plans`);\n if (tasks > 0) parts.push(`${tasksDone}/${tasks} tasks`);\n return ` [${parts.join(\", \")}]`;\n}\n\n/** A node is empty when it has no id, no information, and no children. */\nfunction isEmpty(node: State): boolean {\n return !node.id && !node.information && (!node.children || node.children.length === 0);\n}\n\n/** Sort children by concept hierarchy order. Unknown names go to the end, preserving relative order. */\nfunction sortByConceptOrder(children: readonly State[]): readonly State[] {\n return [...children].sort((a, b) => {\n const ai = CONCEPT_ORDER.indexOf(a.name);\n const bi = CONCEPT_ORDER.indexOf(b.name);\n const aOrder = ai >= 0 ? ai : CONCEPT_ORDER.length;\n const bOrder = bi >= 0 ? bi : CONCEPT_ORDER.length;\n return aOrder - bOrder;\n });\n}\n\n// ================================================================\n// Render — 3-layer output for tool results\n// ================================================================\n\nexport interface RenderOptions {\n /** The process that was executed. */\n process: string;\n /** Display name for the primary node. */\n name: string;\n /** State projection of the affected node. */\n state: State;\n /** AI cognitive hint — first-person, state-aware self-direction cue. */\n cognitiveHint?: string | null;\n /** Fold predicate — folded nodes render heading only. */\n fold?: RenderStateOptions[\"fold\"];\n}\n\n/** Render a full 3-layer output string. */\nexport function render(opts: RenderOptions): string {\n const { process, name, state, cognitiveHint, fold } = opts;\n const lines: string[] = [];\n\n // Layer 1: Status\n lines.push(describe(process, name, state));\n\n // Layer 2: Hint (static) + Cognitive hint (state-aware)\n lines.push(hint(process));\n if (cognitiveHint) {\n lines.push(`I → ${cognitiveHint}`);\n }\n\n // Layer 3: Projection — generic markdown rendering of the full state tree\n lines.push(\"\");\n lines.push(renderState(state, 1, fold ? { fold } : undefined));\n\n return lines.join(\"\\n\");\n}\n","/**\n * Product Render — format product state as readable text.\n *\n * Renders product operations into human-readable summaries.\n * Ownership links show owner names only (not full individual trees).\n * Specs show behavior contract titles for quick overview.\n */\nimport type { State } from \"@rolexjs/system\";\nimport { describe, hint } from \"./render.js\";\n\n// ================================================================\n// Types\n// ================================================================\n\nexport type ProductAction =\n | \"produce\"\n | \"strategy\"\n | \"spec\"\n | \"release\"\n | \"channel\"\n | \"own\"\n | \"disown\"\n | \"deprecate\";\n\n// ================================================================\n// Product Overview\n// ================================================================\n\nexport function renderProduct(state: State): string {\n const lines: string[] = [];\n const id = state.id ?? \"(no id)\";\n const tagPart = state.tags?.length ? ` ${state.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n\n // Title\n lines.push(`# ${id}${tagPart}`);\n\n // Feature body (vision)\n if (state.information) {\n lines.push(\"\");\n lines.push(state.information);\n }\n\n // Owners (ownership links — compact)\n const owners = state.links?.filter((l) => l.relation === \"ownership\") ?? [];\n if (owners.length > 0) {\n lines.push(\"\");\n lines.push(\"## Owner\");\n for (const o of owners) {\n const alias =\n Array.isArray(o.target.alias) && o.target.alias.length\n ? ` (${o.target.alias.join(\", \")})`\n : \"\";\n lines.push(`- ${o.target.id ?? \"(no id)\"}${alias}`);\n }\n }\n\n // Children by type\n const children = state.children ?? [];\n\n const strategies = children.filter((c) => c.name === \"strategy\");\n const specs = children.filter((c) => c.name === \"spec\");\n const releases = children.filter((c) => c.name === \"release\");\n const channels = children.filter((c) => c.name === \"channel\");\n\n if (strategies.length > 0) {\n lines.push(\"\");\n lines.push(\"## Strategy\");\n for (const s of strategies) {\n if (s.information) lines.push(s.information);\n }\n }\n\n if (specs.length > 0) {\n lines.push(\"\");\n lines.push(\"## Specs\");\n for (const s of specs) {\n const title = s.id ?? extractFeatureTitle(s.information);\n lines.push(`- ${title}`);\n }\n }\n\n if (releases.length > 0) {\n lines.push(\"\");\n lines.push(\"## Releases\");\n for (const r of releases) {\n const rTag = r.tags?.length ? ` ${r.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n const title = r.id ?? extractFeatureTitle(r.information);\n lines.push(`- ${title}${rTag}`);\n }\n }\n\n if (channels.length > 0) {\n lines.push(\"\");\n lines.push(\"## Channels\");\n for (const c of channels) {\n const title = c.id ?? extractFeatureTitle(c.information);\n lines.push(`- ${title}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Compose — main entry point\n// ================================================================\n\n/**\n * Render a product operation result as readable text.\n * Returns status + hint + product overview.\n */\nexport function renderProductResult(action: ProductAction, state: State): string {\n const name = state.id ?? state.name;\n const lines: string[] = [];\n\n // Layer 1: Status\n lines.push(describe(action, name, state));\n\n // Layer 2: Hint\n lines.push(hint(action));\n\n // Layer 3: Product overview\n const productState = isProductNode(state) ? state : null;\n if (productState) {\n lines.push(\"\");\n lines.push(renderProduct(productState));\n }\n\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Helpers\n// ================================================================\n\nfunction isProductNode(state: State): boolean {\n return state.name === \"product\";\n}\n\nfunction extractFeatureTitle(information?: string | null): string {\n if (!information) return \"(untitled)\";\n const match = information.match(/^Feature:\\s*(.+)$/m);\n return match?.[1]?.trim() ?? information.split(\"\\n\")[0].trim();\n}\n","/**\n * Project Render — format project state as readable text.\n *\n * Renders project operations into human-readable summaries.\n * Participation links show member names only (not full individual trees).\n * Milestones show progress status (#done or pending).\n */\nimport type { State } from \"@rolexjs/system\";\nimport { describe, hint } from \"./render.js\";\n\n// ================================================================\n// Types\n// ================================================================\n\nexport type ProjectAction =\n | \"launch\"\n | \"scope\"\n | \"milestone\"\n | \"achieve\"\n | \"enroll\"\n | \"remove\"\n | \"deliver\"\n | \"wiki\"\n | \"archive\"\n | \"produce\";\n\n// ================================================================\n// Project Overview\n// ================================================================\n\nexport function renderProject(state: State): string {\n const lines: string[] = [];\n const id = state.id ?? \"(no id)\";\n const tagPart = state.tags?.length ? ` ${state.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n\n // Title\n lines.push(`# ${id}${tagPart}`);\n\n // Feature body\n if (state.information) {\n lines.push(\"\");\n lines.push(state.information);\n }\n\n // Members (participation links — compact)\n const members = state.links?.filter((l) => l.relation === \"participation\") ?? [];\n if (members.length > 0) {\n lines.push(\"\");\n lines.push(\"## Members\");\n for (const m of members) {\n const alias =\n Array.isArray(m.target.alias) && m.target.alias.length\n ? ` (${m.target.alias.join(\", \")})`\n : \"\";\n lines.push(`- ${m.target.id ?? \"(no id)\"}${alias}`);\n }\n }\n\n // Children by type\n const children = state.children ?? [];\n\n const scopes = children.filter((c) => c.name === \"scope\");\n const milestones = children.filter((c) => c.name === \"milestone\");\n const deliverables = children.filter((c) => c.name === \"deliverable\");\n const wikis = children.filter((c) => c.name === \"wiki\");\n\n if (scopes.length > 0) {\n lines.push(\"\");\n lines.push(\"## Scope\");\n for (const s of scopes) {\n if (s.information) lines.push(s.information);\n }\n }\n\n if (milestones.length > 0) {\n lines.push(\"\");\n lines.push(\"## Milestones\");\n for (const m of milestones) {\n const mTag = m.tags?.length ? ` ${m.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n const marker = m.tags?.includes(\"done\") ? \"[x]\" : \"[ ]\";\n const title = extractFeatureTitle(m.information);\n lines.push(`- ${marker} ${m.id ?? title}${mTag}`);\n if (m.information && m.id) {\n const desc = extractFeatureTitle(m.information);\n if (desc && desc !== m.id) lines.push(` ${desc}`);\n }\n }\n }\n\n if (deliverables.length > 0) {\n lines.push(\"\");\n lines.push(\"## Deliverables\");\n for (const d of deliverables) {\n const title = d.id ?? extractFeatureTitle(d.information);\n lines.push(`- ${title}`);\n }\n }\n\n if (wikis.length > 0) {\n lines.push(\"\");\n lines.push(\"## Wiki\");\n for (const w of wikis) {\n const title = w.id ?? extractFeatureTitle(w.information);\n lines.push(`- ${title}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Compose — main entry point\n// ================================================================\n\n/**\n * Render a project operation result as readable text.\n * Returns status + hint + project overview.\n */\nexport function renderProjectResult(action: ProjectAction, state: State): string {\n const name = state.id ?? state.name;\n const lines: string[] = [];\n\n // Layer 1: Status\n lines.push(describe(action, name, state));\n\n // Layer 2: Hint\n lines.push(hint(action));\n\n // Layer 3: Project overview\n // For child operations (scope, milestone, etc.), find the project parent\n const projectState = isProjectNode(state) ? state : null;\n if (projectState) {\n lines.push(\"\");\n lines.push(renderProject(projectState));\n }\n\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Helpers\n// ================================================================\n\nfunction isProjectNode(state: State): boolean {\n return state.name === \"project\";\n}\n\nfunction extractFeatureTitle(information?: string | null): string {\n if (!information) return \"(untitled)\";\n const match = information.match(/^Feature:\\s*(.+)$/m);\n return match?.[1]?.trim() ?? information.split(\"\\n\")[0].trim();\n}\n","/**\n * RoleX — builder entry point.\n *\n * Usage:\n * import { createRoleX } from \"rolexjs\";\n *\n * const rx = createRoleX({ platform });\n * const role = await rx.individual.activate({ individual: \"sean\" });\n * await rx.society.born({ id: \"alice\", content: \"Feature: Alice\" });\n */\n\nimport { createBuilder, type Platform, type Renderer, type RoleXBuilder } from \"@rolexjs/core\";\nimport { genesis } from \"@rolexjs/genesis\";\nimport { createRendererRouter } from \"./renderers/index.js\";\n\nexport interface RoleXConfig {\n platform: Platform;\n renderer?: Renderer;\n}\n\n/** Create a RoleX builder. Synchronous — initialization is lazy. Genesis is built-in. */\nexport function createRoleX(config: RoleXConfig): RoleXBuilder {\n return createBuilder({\n platform: config.platform,\n renderer: config.renderer ?? createRendererRouter(),\n prototypes: [genesis],\n });\n}\n","/**\n * Renderers — business-domain Markdown renderers for AI readability.\n *\n * Each renderer handles a command namespace and transforms\n * CommandResult into AI-readable Markdown.\n *\n * createRendererRouter() wires all renderers into a RendererRouter.\n */\n\nimport { RendererRouter } from \"@rolexjs/core\";\n\n/** @deprecated Use SocietyRenderer — individual.* commands moved to society.* */\nexport { IndividualRenderer } from \"./individual.js\";\n\nimport { InspectRenderer } from \"./inspect.js\";\nimport { OrgRenderer } from \"./org.js\";\nimport { PositionRenderer } from \"./position.js\";\nimport { ProductRenderer } from \"./product.js\";\nimport { ProjectRenderer } from \"./project.js\";\nimport { RoleRenderer } from \"./role.js\";\nimport { SocietyRenderer } from \"./society.js\";\nimport { SurveyRenderer } from \"./survey.js\";\n\nexport { InspectRenderer } from \"./inspect.js\";\nexport { OrgRenderer } from \"./org.js\";\nexport { PositionRenderer } from \"./position.js\";\nexport { ProductRenderer } from \"./product.js\";\nexport { ProjectRenderer } from \"./project.js\";\nexport type { Renderer } from \"./renderer.js\";\nexport { RoleRenderer } from \"./role.js\";\nexport { SocietyRenderer } from \"./society.js\";\nexport { SurveyRenderer } from \"./survey.js\";\n\n/** Create a RendererRouter with all business renderers registered. */\nexport function createRendererRouter(): RendererRouter {\n return new RendererRouter()\n .register(\"role\", new RoleRenderer())\n .register(\"org\", new OrgRenderer())\n .register(\"position\", new PositionRenderer())\n .register(\"product\", new ProductRenderer())\n .register(\"project\", new ProjectRenderer())\n .register(\"society\", new SocietyRenderer())\n .register(\"survey\", new SurveyRenderer())\n .register(\"inspect\", new InspectRenderer());\n}\n","/**\n * InspectRenderer — Markdown rendering for the inspect top-level operation.\n *\n * Renders any node's full subtree using the generic renderState renderer.\n */\n\nimport type { CommandResult } from \"@rolexjs/core\";\nimport { describe, hint, renderState } from \"../render.js\";\nimport type { Renderer } from \"./renderer.js\";\n\nexport class InspectRenderer implements Renderer {\n render(_command: string, result: CommandResult): string {\n const name = result.state.id ?? result.state.name;\n const lines: string[] = [];\n\n lines.push(describe(result.process, name, result.state));\n lines.push(hint(result.process));\n lines.push(\"\");\n lines.push(renderState(result.state, 1, { compactLinks: true }));\n\n return lines.join(\"\\n\");\n }\n}\n","/**\n * OrgRenderer — Markdown rendering for org.* commands.\n *\n * Covers: charter, hire, fire.\n * (found and dissolve moved to society.* namespace)\n */\n\nimport type { CommandResult } from \"@rolexjs/core\";\nimport { describe, hint, renderState } from \"../render.js\";\nimport type { Renderer } from \"./renderer.js\";\n\nexport class OrgRenderer implements Renderer {\n render(command: string, result: CommandResult): string {\n const process = command.startsWith(\"org.\") ? command.slice(\"org.\".length) : command;\n const name = result.state.id ?? result.state.name;\n const lines: string[] = [];\n\n lines.push(describe(process, name, result.state));\n lines.push(hint(process));\n lines.push(\"\");\n lines.push(renderState(result.state));\n\n return lines.join(\"\\n\");\n }\n}\n","/**\n * PositionRenderer — Markdown rendering for position.* commands.\n *\n * Covers: establish, charge, require, abolish, appoint, dismiss.\n */\n\nimport type { CommandResult } from \"@rolexjs/core\";\nimport { describe, hint, renderState } from \"../render.js\";\nimport type { Renderer } from \"./renderer.js\";\n\nexport class PositionRenderer implements Renderer {\n render(command: string, result: CommandResult): string {\n const process = command.startsWith(\"position.\") ? command.slice(\"position.\".length) : command;\n const name = result.state.id ?? result.state.name;\n const lines: string[] = [];\n\n lines.push(describe(process, name, result.state));\n lines.push(hint(process));\n lines.push(\"\");\n lines.push(renderState(result.state));\n\n return lines.join(\"\\n\");\n }\n}\n","/**\n * ProductRenderer — Markdown rendering for product.* commands.\n *\n * Covers: create, strategy, spec, release, channel, own, disown, deprecate.\n * Uses specialized product layout (owner, strategy, specs, releases, channels).\n */\n\nimport type { CommandResult } from \"@rolexjs/core\";\nimport { type ProductAction, renderProductResult } from \"../product-render.js\";\nimport type { Renderer } from \"./renderer.js\";\n\nexport class ProductRenderer implements Renderer {\n render(command: string, result: CommandResult): string {\n const action = (\n command.startsWith(\"product.\") ? command.slice(\"product.\".length) : command\n ) as ProductAction;\n return renderProductResult(action, result.state);\n }\n}\n","/**\n * ProjectRenderer — Markdown rendering for project.* commands.\n *\n * Covers: launch, scope, milestone, achieve, enroll, remove, deliver, wiki, archive, produce.\n * Uses specialized project layout (members, milestones, deliverables, wiki sections).\n * \"produce\" delegates to ProductRenderer since it returns product state.\n */\n\nimport type { CommandResult } from \"@rolexjs/core\";\nimport { type ProductAction, renderProductResult } from \"../product-render.js\";\nimport { type ProjectAction, renderProjectResult } from \"../project-render.js\";\nimport type { Renderer } from \"./renderer.js\";\n\nexport class ProjectRenderer implements Renderer {\n render(command: string, result: CommandResult): string {\n const action = (\n command.startsWith(\"project.\") ? command.slice(\"project.\".length) : command\n ) as ProjectAction;\n // produce returns product state, delegate to product renderer\n if (action === \"produce\") {\n return renderProductResult(action as unknown as ProductAction, result.state);\n }\n return renderProjectResult(action, result.state);\n }\n}\n","/**\n * RoleRenderer — Markdown rendering for role.* commands.\n *\n * Covers: focus, want, plan, todo, finish, complete, abandon,\n * reflect, realize, master, forget, skill.\n */\n\nimport type { CommandResult } from \"@rolexjs/core\";\nimport { collectPermissions, describe, hint, renderPermissions, renderState } from \"../render.js\";\nimport type { Renderer } from \"./renderer.js\";\n\nexport class RoleRenderer implements Renderer {\n render(command: string, result: CommandResult): string {\n const process = command.startsWith(\"role.\") ? command.slice(\"role.\".length) : command;\n const name = result.state.id ?? result.state.name;\n const lines: string[] = [];\n\n lines.push(describe(process, name, result.state));\n lines.push(hint(process));\n lines.push(\"\");\n lines.push(renderState(result.state));\n\n // Activate: append permissions collected from links\n if (process === \"activate\") {\n const permissions = collectPermissions(result.state);\n if (permissions.length > 0) {\n lines.push(\"\");\n lines.push(renderPermissions(permissions));\n }\n }\n\n return lines.join(\"\\n\");\n }\n}\n","/**\n * SocietyRenderer — Markdown rendering for society.* commands.\n *\n * Covers: born, retire, die, rehire, teach, train, found, dissolve, crown, uncrown.\n */\n\nimport type { CommandResult } from \"@rolexjs/core\";\nimport { describe, hint, renderState } from \"../render.js\";\nimport type { Renderer } from \"./renderer.js\";\n\nexport class SocietyRenderer implements Renderer {\n render(command: string, result: CommandResult): string {\n const process = command.startsWith(\"society.\") ? command.slice(\"society.\".length) : command;\n const name = result.state.id ?? result.state.name;\n const lines: string[] = [];\n\n lines.push(describe(process, name, result.state));\n lines.push(hint(process));\n lines.push(\"\");\n lines.push(renderState(result.state));\n\n return lines.join(\"\\n\");\n }\n}\n","/**\n * SurveyRenderer — Markdown rendering for survey.* commands.\n *\n * Renders the organization-centric tree view:\n * orgs → projects + members (with positions) → unaffiliated individuals.\n */\n\nimport type { CommandResult } from \"@rolexjs/core\";\nimport type { State } from \"@rolexjs/system\";\nimport type { Renderer } from \"./renderer.js\";\n\nexport class SurveyRenderer implements Renderer {\n render(_command: string, result: CommandResult): string {\n const children = result.state.children ?? [];\n\n if (children.length === 0) {\n return \"Society is empty.\";\n }\n\n // Check if all children are the same type (filtered by type)\n const types = new Set(children.map((c) => c.name));\n if (types.size === 1 && !types.has(\"organization\")) {\n return this.renderFlat(children);\n }\n\n return this.renderTree(children);\n }\n\n private renderFlat(items: readonly State[]): string {\n const lines: string[] = [];\n for (const item of items) {\n const tag = item.tags?.length ? ` ${item.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n const alias =\n Array.isArray(item.alias) && item.alias.length ? ` (${item.alias.join(\", \")})` : \"\";\n lines.push(`${item.id ?? \"(no id)\"}${alias}${tag}`);\n }\n return lines.join(\"\\n\");\n }\n\n private renderTree(children: readonly State[]): string {\n const orgs = children.filter((c) => c.name === \"organization\");\n const individuals = children.filter((c) => c.name === \"individual\");\n\n // Build a map: individual id → positions they serve\n const individualPositions = new Map<string, string[]>();\n for (const ind of individuals) {\n const serves = ind.links?.filter((l) => l.relation === \"serve\") ?? [];\n if (serves.length > 0) {\n individualPositions.set(\n ind.id ?? \"\",\n serves.map((l) => l.target.id ?? \"(no id)\")\n );\n }\n }\n\n const affiliatedIndividuals = new Set<string>();\n const lines: string[] = [];\n\n for (const org of orgs) {\n const alias =\n Array.isArray(org.alias) && org.alias.length ? ` (${org.alias.join(\", \")})` : \"\";\n const tag = org.tags?.length ? ` ${org.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n lines.push(`${org.id}${alias}${tag}`);\n\n // Projects owned by this org\n const projects = org.links?.filter((l) => l.relation === \"project\") ?? [];\n for (const p of projects) {\n const pAlias =\n Array.isArray(p.target.alias) && p.target.alias.length\n ? ` (${p.target.alias.join(\", \")})`\n : \"\";\n const pTag = p.target.tags?.length ? ` ${p.target.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n lines.push(` 📦 ${p.target.id ?? \"(no id)\"}${pAlias}${pTag}`);\n }\n\n // Members of this org\n const members = org.links?.filter((l) => l.relation === \"membership\") ?? [];\n if (members.length === 0 && projects.length === 0) {\n lines.push(\" (empty)\");\n }\n for (const m of members) {\n affiliatedIndividuals.add(m.target.id ?? \"\");\n const mAlias =\n Array.isArray(m.target.alias) && m.target.alias.length\n ? ` (${m.target.alias.join(\", \")})`\n : \"\";\n const mTag = m.target.tags?.length ? ` ${m.target.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n const posLabels = individualPositions.get(m.target.id ?? \"\");\n const posStr = posLabels?.length ? ` — ${posLabels.join(\", \")}` : \"\";\n lines.push(` ${m.target.id}${mAlias}${mTag}${posStr}`);\n }\n lines.push(\"\");\n }\n\n // Unaffiliated individuals\n const unaffiliated = individuals.filter((ind) => !affiliatedIndividuals.has(ind.id ?? \"\"));\n if (unaffiliated.length > 0) {\n lines.push(\"─── unaffiliated ───\");\n for (const ind of unaffiliated) {\n const alias =\n Array.isArray(ind.alias) && ind.alias.length ? ` (${ind.alias.join(\", \")})` : \"\";\n const tag = ind.tags?.length ? ` ${ind.tags.map((t) => `#${t}`).join(\" \")}` : \"\";\n const posLabels = individualPositions.get(ind.id ?? \"\");\n const posStr = posLabels?.length ? ` — ${posLabels.join(\", \")}` : \"\";\n lines.push(` ${ind.id}${alias}${tag}${posStr}`);\n }\n }\n\n return lines.join(\"\\n\");\n }\n}\n"],"mappings":"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","names":["extractFeatureTitle"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/context.ts","../src/feature.ts","../src/find.ts","../src/issue-render.ts","../src/render.ts","../src/project-render.ts","../src/role.ts","../src/rolex.ts"],"sourcesContent":["/**\n * rolexjs — RoleX API + Render layer.\n *\n * Usage:\n * import { Rolex, Role, describe, hint } from \"rolexjs\";\n *\n * const rolex = await createRoleX(platform);\n * await rolex.genesis();\n * const role = await rolex.activate(\"sean\");\n * await role.want(\"Feature: Ship v1\", \"ship-v1\");\n */\n\n// Re-export core (structures + processes)\nexport * from \"@rolexjs/core\";\n// Context\nexport { RoleContext } from \"./context.js\";\n// Feature (Gherkin type + parse/serialize)\nexport type { DataTableRow, Feature, Scenario, Step } from \"./feature.js\";\nexport { parse, serialize } from \"./feature.js\";\n// Find\nexport { findInState } from \"./find.js\";\n// Issue Render\nexport type { IssueAction, LabelResolver } from \"./issue-render.js\";\nexport {\n renderComment,\n renderCommentList,\n renderIssue,\n renderIssueList,\n renderIssueResult,\n} from \"./issue-render.js\";\n// Project Render\nexport type { ProjectAction } from \"./project-render.js\";\nexport { renderProject, renderProjectResult } from \"./project-render.js\";\nexport type { RenderOptions, RenderStateOptions } from \"./render.js\";\n// Render\nexport { describe, detail, directive, hint, render, renderState, world } from \"./render.js\";\n// Role\nexport { Role } from \"./role.js\";\n// API\nexport type { CensusEntry } from \"./rolex.js\";\nexport { createRoleX, Rolex } from \"./rolex.js\";\n","/**\n * RoleContext — stateful session context for role operations.\n *\n * Tracks execution state from the individual's perspective:\n * - roleId (who I am)\n * - focusedGoalId / focusedPlanId (what I'm working on)\n * - encounter / experience id sets (what I have for cognition)\n *\n * Created by activate, updated by subsequent role operations.\n * Consumers (MCP, CLI) hold a reference and pass it through.\n */\nimport type { State } from \"@rolexjs/system\";\n\nexport class RoleContext {\n roleId: string;\n focusedGoalId: string | null = null;\n focusedPlanId: string | null = null;\n\n readonly encounterIds = new Set<string>();\n readonly experienceIds = new Set<string>();\n\n constructor(roleId: string) {\n this.roleId = roleId;\n }\n\n // ================================================================\n // Requirements — throw if missing\n // ================================================================\n\n requireGoalId(): string {\n if (!this.focusedGoalId) throw new Error(\"No focused goal. Call want first.\");\n return this.focusedGoalId;\n }\n\n requirePlanId(): string {\n if (!this.focusedPlanId) throw new Error(\"No focused plan. Call plan first.\");\n return this.focusedPlanId;\n }\n\n // ================================================================\n // Cognition registries\n // ================================================================\n\n addEncounter(id: string) {\n this.encounterIds.add(id);\n }\n\n requireEncounterIds(ids: string[]) {\n for (const id of ids) {\n if (!this.encounterIds.has(id)) throw new Error(`Encounter not found: \"${id}\"`);\n }\n }\n\n consumeEncounters(ids: string[]) {\n for (const id of ids) {\n this.encounterIds.delete(id);\n }\n }\n\n addExperience(id: string) {\n this.experienceIds.add(id);\n }\n\n requireExperienceIds(ids: string[]) {\n for (const id of ids) {\n if (!this.experienceIds.has(id)) throw new Error(`Experience not found: \"${id}\"`);\n }\n }\n\n consumeExperiences(ids: string[]) {\n for (const id of ids) {\n this.experienceIds.delete(id);\n }\n }\n\n // ================================================================\n // Rehydration — rebuild from activation state\n // ================================================================\n\n /** Walk the state tree and populate registries. */\n rehydrate(state: State) {\n this.walk(state);\n }\n\n private walk(node: State) {\n if (node.id) {\n switch (node.name) {\n case \"goal\":\n if (!this.focusedGoalId) this.focusedGoalId = node.id;\n break;\n case \"encounter\":\n this.encounterIds.add(node.id);\n break;\n case \"experience\":\n this.experienceIds.add(node.id);\n break;\n }\n }\n for (const child of (node as State & { children?: readonly State[] }).children ?? []) {\n this.walk(child);\n }\n }\n\n // ================================================================\n // Cognitive hints — state-aware AI self-direction cues\n // ================================================================\n\n /** First-person, state-aware hint for the AI after an operation. */\n cognitiveHint(process: string): string | null {\n switch (process) {\n case \"activate\":\n if (!this.focusedGoalId)\n return \"I have no goal yet. I should call `want` to declare one, or `focus` to review existing goals.\";\n return \"I have an active goal. I should call `focus` to review progress, or `want` to declare a new goal.\";\n\n case \"focus\":\n if (!this.focusedPlanId)\n return \"I have a goal but no focused plan. I should call `plan` to create or focus on one.\";\n return \"I have a plan. I should call `todo` to create tasks, or continue working.\";\n\n case \"want\":\n return \"Goal declared. I should call `plan` to design how to achieve it.\";\n\n case \"plan\":\n return \"Plan created. I should call `todo` to create concrete tasks.\";\n\n case \"todo\":\n return \"Task created. I can add more with `todo`, or start working and call `finish` when done.\";\n\n case \"finish\": {\n const encCount = this.encounterIds.size;\n if (encCount > 0 && !this.focusedGoalId)\n return `Task finished. No more goals — I have ${encCount} encounter(s) to choose from for \\`reflect\\`, or \\`want\\` a new goal.`;\n return \"Task finished. I should continue with remaining tasks, or call `complete` when the plan is done.\";\n }\n\n case \"complete\":\n case \"abandon\": {\n const encCount = this.encounterIds.size;\n const goalNote = this.focusedGoalId\n ? ` I should check if goal \"${this.focusedGoalId}\" needs a new \\`plan\\`, or \\`forget\\` it if the direction is fulfilled.`\n : \"\";\n if (encCount > 0)\n return `Plan closed.${goalNote} I have ${encCount} encounter(s) to choose from for \\`reflect\\`, or I can continue with other plans.`;\n return `Plan closed.${goalNote} I can create a new \\`plan\\`, or \\`focus\\` on another goal.`;\n }\n\n case \"reflect\": {\n const expCount = this.experienceIds.size;\n if (expCount > 0)\n return `Experience gained. I can \\`realize\\` principles or \\`master\\` procedures — ${expCount} experience(s) available.`;\n return \"Experience gained. I can `realize` a principle, `master` a procedure, or continue working.\";\n }\n\n case \"realize\":\n return \"Principle added. I should continue working.\";\n\n case \"master\":\n return \"Procedure added. I should continue working.\";\n\n default:\n return null;\n }\n }\n}\n","/**\n * Feature — the information format for the RoleX concept world.\n *\n * Every node's information is a Gherkin Feature.\n * This is our own type — decoupled from @cucumber/messages.\n */\n\nexport interface Feature {\n readonly name: string;\n readonly description?: string;\n readonly tags?: readonly string[];\n readonly scenarios: readonly Scenario[];\n}\n\nexport interface Scenario {\n readonly name: string;\n readonly description?: string;\n readonly tags?: readonly string[];\n readonly steps: readonly Step[];\n}\n\nexport interface Step {\n readonly keyword: string;\n readonly text: string;\n readonly dataTable?: readonly DataTableRow[];\n}\n\nexport interface DataTableRow {\n readonly cells: readonly string[];\n}\n\n// ================================================================\n// Parse + Serialize\n// ================================================================\n\nimport { parse as parseGherkin } from \"@rolexjs/parser\";\n\n/** Parse a Gherkin source string into a Feature. */\nexport function parse(source: string): Feature {\n const doc = parseGherkin(source);\n const f = doc.feature;\n if (!f) throw new Error(\"No Feature found in source\");\n\n return {\n name: f.name,\n ...(f.description?.trim() ? { description: f.description.trim() } : {}),\n ...(f.tags?.length ? { tags: f.tags.map((t) => t.name) } : {}),\n scenarios: (f.children ?? [])\n .filter((c) => c.scenario)\n .map((c) => {\n const s = c.scenario!;\n return {\n name: s.name,\n ...(s.description?.trim() ? { description: s.description.trim() } : {}),\n ...(s.tags?.length ? { tags: s.tags.map((t) => t.name) } : {}),\n steps: (s.steps ?? []).map((st) => ({\n keyword: st.keyword,\n text: st.text,\n ...(st.dataTable\n ? {\n dataTable: st.dataTable.rows.map((r) => ({\n cells: r.cells.map((c) => c.value),\n })),\n }\n : {}),\n })),\n };\n }),\n };\n}\n\n/** Serialize a Feature back to Gherkin source string. */\nexport function serialize(feature: Feature): string {\n const lines: string[] = [];\n\n if (feature.tags?.length) {\n lines.push(feature.tags.join(\" \"));\n }\n lines.push(`Feature: ${feature.name}`);\n if (feature.description) {\n for (const line of feature.description.split(\"\\n\")) {\n lines.push(` ${line}`);\n }\n }\n\n for (const scenario of feature.scenarios) {\n lines.push(\"\");\n if (scenario.tags?.length) {\n lines.push(` ${scenario.tags.join(\" \")}`);\n }\n lines.push(` Scenario: ${scenario.name}`);\n if (scenario.description) {\n for (const line of scenario.description.split(\"\\n\")) {\n lines.push(` ${line}`);\n }\n }\n for (const step of scenario.steps) {\n lines.push(` ${step.keyword}${step.text}`);\n if (step.dataTable) {\n for (const row of step.dataTable) {\n lines.push(` | ${row.cells.join(\" | \")} |`);\n }\n }\n }\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n","/**\n * Find — unified node lookup with priority-based disambiguation.\n *\n * When multiple nodes share the same id (allowed after relaxing\n * global uniqueness), prefer \"addressable\" nodes over internal metadata.\n *\n * Priority (lower = preferred):\n * 0: individual, organization, position — top-level entities\n * 1: goal — execution roots\n * 2: plan, task — execution nodes\n * 3: procedure, principle — individual knowledge\n * 4: encounter, experience — cognition artifacts\n * 5: identity, charter — structural definitions\n * 6: duty, requirement, background, etc. — internal metadata\n */\nimport type { State, Structure } from \"@rolexjs/system\";\n\nconst PRIORITY: Record<string, number> = {\n individual: 0,\n organization: 0,\n position: 0,\n goal: 1,\n plan: 2,\n task: 2,\n procedure: 3,\n principle: 3,\n encounter: 4,\n experience: 4,\n identity: 5,\n charter: 5,\n duty: 6,\n requirement: 6,\n background: 6,\n tone: 6,\n mindset: 6,\n};\n\nfunction priorityOf(name: string): number {\n return PRIORITY[name] ?? 7;\n}\n\nfunction matches(node: State, target: string): boolean {\n if (node.id?.toLowerCase() === target) return true;\n if (node.alias) {\n for (const a of node.alias) {\n if (a.toLowerCase() === target) return true;\n }\n }\n return false;\n}\n\n/**\n * Find a node by id or alias in a state tree.\n *\n * When multiple nodes match, returns the one with the highest priority\n * (top-level entities > execution nodes > knowledge > metadata).\n */\nexport function findInState(state: State, target: string): Structure | null {\n const lowered = target.toLowerCase();\n let best: Structure | null = null;\n let bestPriority = Infinity;\n\n function walk(node: State): void {\n if (matches(node, lowered)) {\n const p = priorityOf(node.name);\n if (p < bestPriority) {\n best = node;\n bestPriority = p;\n if (p === 0) return; // Can't do better\n }\n }\n for (const child of node.children ?? []) {\n walk(child);\n if (bestPriority === 0) return; // Early exit\n }\n }\n\n walk(state);\n return best;\n}\n","/**\n * Issue Render — format IssueX data as readable text.\n *\n * Lightweight rendering for issue operations.\n * Unlike the core render layer (which projects State trees),\n * this module formats flat IssueX objects into human-readable strings.\n */\nimport type { Comment, Issue } from \"issuexjs\";\n\n// ================================================================\n// Types\n// ================================================================\n\nexport type IssueAction =\n | \"publish\"\n | \"get\"\n | \"list\"\n | \"close\"\n | \"reopen\"\n | \"update\"\n | \"assign\"\n | \"comment\"\n | \"comments\"\n | \"label\"\n | \"unlabel\";\n\nexport type LabelResolver = (ids: string[]) => Promise<string[]>;\n\n// ================================================================\n// Single Issue\n// ================================================================\n\nexport function renderIssue(issue: Issue, labelNames?: string[]): string {\n const lines: string[] = [];\n\n lines.push(`#${issue.number} ${issue.title} [${issue.status}]`);\n\n const meta: string[] = [`Author: ${issue.author}`];\n if (issue.assignee) meta.push(`Assignee: ${issue.assignee}`);\n if (labelNames && labelNames.length > 0) {\n meta.push(`Labels: ${labelNames.join(\", \")}`);\n }\n lines.push(meta.join(\" | \"));\n\n if (issue.body) {\n lines.push(\"───\");\n lines.push(issue.body);\n }\n\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Issue List\n// ================================================================\n\nexport function renderIssueList(issues: Issue[]): string {\n if (issues.length === 0) return \"No issues found.\";\n\n const lines: string[] = [];\n for (const issue of issues) {\n const assignee = issue.assignee ? ` → ${issue.assignee}` : \"\";\n lines.push(`#${issue.number} [${issue.status}] ${issue.title} (${issue.author}${assignee})`);\n }\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Comments\n// ================================================================\n\nexport function renderComment(comment: Comment): string {\n const time = formatTime(comment.createdAt);\n return `${comment.author} (${time}):\\n${comment.body}`;\n}\n\nexport function renderCommentList(comments: Comment[]): string {\n if (comments.length === 0) return \"No comments.\";\n return comments.map(renderComment).join(\"\\n───\\n\");\n}\n\n// ================================================================\n// Status line\n// ================================================================\n\nconst statusTemplates: Record<string, (issue: Issue) => string> = {\n publish: (i) => `Issue #${i.number} created.`,\n close: (i) => `Issue #${i.number} closed.`,\n reopen: (i) => `Issue #${i.number} reopened.`,\n update: (i) => `Issue #${i.number} updated.`,\n assign: (i) => `Issue #${i.number} assigned to ${i.assignee ?? \"nobody\"}.`,\n comment: (i) => `Comment added to #${i.number}.`,\n label: (i) => `Label added to #${i.number}.`,\n unlabel: (i) => `Label removed from #${i.number}.`,\n};\n\n// ================================================================\n// Compose — the main entry point for Role.use()\n// ================================================================\n\n/**\n * Render an issue operation result as readable text.\n * Dispatches to the right renderer based on action.\n */\nexport async function renderIssueResult(\n action: IssueAction,\n result: unknown,\n resolveLabels?: LabelResolver\n): Promise<string> {\n switch (action) {\n case \"list\":\n return renderIssueList(result as Issue[]);\n\n case \"comments\":\n return renderCommentList(result as Comment[]);\n\n case \"comment\": {\n const comment = result as Comment;\n return `Comment added to issue.\\n\\n${renderComment(comment)}`;\n }\n\n case \"get\": {\n if (!result) return \"Issue not found.\";\n const issue = result as Issue;\n const labelNames = await resolveLabelNames(issue, resolveLabels);\n return renderIssue(issue, labelNames);\n }\n\n default: {\n // All other actions return an Issue with a status line\n const issue = result as Issue;\n const labelNames = await resolveLabelNames(issue, resolveLabels);\n const status = statusTemplates[action]?.(issue) ?? `Issue #${issue.number} ${action}.`;\n return `${status}\\n\\n${renderIssue(issue, labelNames)}`;\n }\n }\n}\n\n// ================================================================\n// Helpers\n// ================================================================\n\nfunction formatTime(iso: string): string {\n return iso.replace(\"T\", \" \").replace(/\\.\\d+Z$/, \"\");\n}\n\nasync function resolveLabelNames(\n issue: Issue,\n resolveLabels?: LabelResolver\n): Promise<string[] | undefined> {\n if (!issue.labels || issue.labels.length === 0) return undefined;\n if (!resolveLabels) return undefined;\n return resolveLabels(issue.labels);\n}\n","/**\n * Render — 3-layer output for all Rolex operations.\n *\n * Layer 1: Status — what just happened (describe)\n * Layer 2: Hint — what to do next (hint + cognitive hint)\n * Layer 3: Projection — full state tree as markdown (renderState)\n *\n * render() composes the 3 layers. MCP and CLI are pure pass-through.\n */\nimport type { State } from \"@rolexjs/system\";\n\n// ================================================================\n// Description — what happened\n// ================================================================\n\nconst descriptions: Record<string, (name: string, state: State) => string> = {\n // Lifecycle\n born: (n) => `Individual \"${n}\" is born.`,\n found: (n) => `Organization \"${n}\" is founded.`,\n establish: (n) => `Position \"${n}\" is established.`,\n charter: (n) => `Charter defined for \"${n}\".`,\n charge: (n) => `Duty \"${n}\" assigned.`,\n retire: (n) => `\"${n}\" retired.`,\n die: (n) => `\"${n}\" is gone.`,\n dissolve: (n) => `Organization \"${n}\" dissolved.`,\n abolish: (n) => `Position \"${n}\" abolished.`,\n rehire: (n) => `\"${n}\" is back.`,\n\n // Organization\n hire: (n) => `\"${n}\" hired.`,\n fire: (n) => `\"${n}\" fired.`,\n appoint: (n) => `\"${n}\" appointed.`,\n dismiss: (n) => `\"${n}\" dismissed.`,\n\n // Project\n launch: (n) => `Project \"${n}\" launched.`,\n scope: (n) => `Scope defined for \"${n}\".`,\n milestone: (n) => `Milestone \"${n}\" added.`,\n achieve: (n) => `Milestone \"${n}\" achieved.`,\n enroll: (n) => `\"${n}\" enrolled.`,\n remove: (n) => `\"${n}\" removed.`,\n deliver: (n) => `Deliverable \"${n}\" added.`,\n wiki: (n) => `Wiki entry \"${n}\" added.`,\n archive: (n) => `Project \"${n}\" archived.`,\n\n // Role\n activate: (n) => `Role \"${n}\" activated.`,\n focus: (n) => `Focused on goal \"${n}\".`,\n\n // Execution\n want: (n) => `Goal \"${n}\" declared.`,\n plan: (n) => `Plan created for \"${n}\".`,\n todo: (n) => `Task \"${n}\" added.`,\n finish: (n) => `Task \"${n}\" finished → encounter recorded.`,\n complete: (n) => `Plan \"${n}\" completed → encounter recorded.`,\n abandon: (n) => `Plan \"${n}\" abandoned → encounter recorded.`,\n\n // Cognition\n reflect: (n) => `Reflected on \"${n}\" → experience gained.`,\n realize: (n) => `Realized principle from \"${n}\".`,\n master: (n) => `Mastered procedure from \"${n}\".`,\n\n // Knowledge management\n forget: (n) => `\"${n}\" forgotten.`,\n};\n\nexport function describe(process: string, name: string, state: State): string {\n const fn = descriptions[process];\n return fn ? fn(name, state) : `${process} completed.`;\n}\n\n// ================================================================\n// Hint — what to do next\n// ================================================================\n\nconst hints: Record<string, string> = {\n // Lifecycle\n born: \"hire into an organization, or activate to start working.\",\n found: \"define a charter for the organization.\",\n establish: \"charge with duties, then appoint members.\",\n charter: \"establish positions for the organization.\",\n charge: \"appoint someone to this position.\",\n retire: \"rehire if needed later.\",\n die: \"this individual is permanently gone.\",\n dissolve: \"the organization no longer exists.\",\n abolish: \"the position no longer exists.\",\n rehire: \"activate to resume working.\",\n\n // Organization\n hire: \"appoint to a position, or activate to start working.\",\n fire: \"the individual is no longer a member.\",\n appoint: \"the individual now holds this position.\",\n dismiss: \"the position is now vacant.\",\n\n // Project\n launch: \"define scope, add milestones, or enroll members.\",\n scope: \"add milestones to break down the project.\",\n milestone: \"enroll members and start working.\",\n achieve: \"continue with remaining milestones, or archive the project.\",\n enroll: \"assign milestones and start working.\",\n remove: \"the individual is no longer a participant.\",\n deliver: \"deliverable recorded.\",\n wiki: \"knowledge entry recorded.\",\n archive: \"the project is archived.\",\n\n // Role\n activate: \"want a goal, or check the current state.\",\n focus: \"plan how to work toward it, or add tasks.\",\n\n // Execution\n want: \"plan how to work toward it.\",\n plan: \"add tasks with todo.\",\n todo: \"start working, finish when done.\",\n finish: \"continue with remaining tasks, or complete the plan.\",\n complete: \"reflect on encounters to gain experience.\",\n abandon: \"reflect on encounters to learn from the experience.\",\n\n // Cognition\n reflect: \"realize principles or master procedures from experience.\",\n realize: \"principle added.\",\n master: \"procedure added.\",\n\n // Knowledge management\n forget: \"the node has been removed.\",\n};\n\nexport function hint(process: string): string {\n const h = hints[process];\n return h ? `Next: ${h}` : \"What would you like to do next?\";\n}\n\n// ================================================================\n// Detail — longer process descriptions (from .feature files)\n// ================================================================\n\nimport { directives, processes, world } from \"@rolexjs/prototype\";\n\n/** Full Gherkin feature content for a process — sourced from .feature files. */\nexport function detail(process: string): string {\n return processes[process] ?? \"\";\n}\n\n/** World feature descriptions — framework-level instructions. */\nexport { world };\n\n// ================================================================\n// Directive — system-level commands at decision points\n// ================================================================\n\n/** Get a directive by topic and scenario. Returns empty string if not found. */\nexport function directive(topic: string, scenario: string): string {\n return directives[topic]?.[scenario] ?? \"\";\n}\n\n// ================================================================\n// Generic State renderer — renders any State tree as markdown\n// ================================================================\n\n/**\n * renderState — markdown renderer for State trees.\n *\n * Rules:\n * - Heading: \"#\" repeated to depth + \" [name]\"\n * - Body: raw information field as-is (full Gherkin preserved)\n * - Links: \"> → relation [target.name]\" with target feature name\n * - Children: sorted by concept hierarchy, then rendered at depth+1\n * - Fold: when fold(node) returns true, render heading only (no body/links/children)\n *\n * Markdown heading depth caps at 6 (######).\n */\nexport interface RenderStateOptions {\n /** When returns true, render only the heading — skip body, links, and children. */\n fold?: (node: State) => boolean;\n}\n\nexport function renderState(state: State, depth = 1, options?: RenderStateOptions): string {\n const lines: string[] = [];\n const level = Math.min(depth, 6);\n const heading = \"#\".repeat(level);\n\n // Heading: [name] (id) {origin} #tag [progress]\n const idPart = state.id ? ` (${state.id})` : \"\";\n const originPart = state.origin ? ` {${state.origin}}` : \"\";\n const tagPart = state.tag ? ` #${state.tag}` : \"\";\n const progressPart = state.name === \"goal\" ? goalProgress(state) : \"\";\n lines.push(`${heading} [${state.name}]${idPart}${originPart}${tagPart}${progressPart}`);\n\n // Folded: heading only\n if (options?.fold?.(state)) {\n return lines.join(\"\\n\");\n }\n\n // Body: full information as-is\n if (state.information) {\n lines.push(\"\");\n lines.push(state.information);\n }\n\n // Links — plan references are compact, organizational links are expanded\n if (state.links && state.links.length > 0) {\n const compactRelations = new Set([\"after\", \"before\", \"fallback\", \"fallback-for\"]);\n const compact = state.links.filter((l) => compactRelations.has(l.relation));\n const expanded = state.links.filter((l) => !compactRelations.has(l.relation));\n for (const link of compact) {\n const targetId = link.target.id ? ` (${link.target.id})` : \"\";\n const targetTag = link.target.tag ? ` #${link.target.tag}` : \"\";\n lines.push(`> ${link.relation}: [${link.target.name}]${targetId}${targetTag}`);\n }\n if (expanded.length > 0) {\n const targets = sortByConceptOrder(expanded.map((l) => l.target));\n for (const target of targets) {\n lines.push(\"\");\n lines.push(renderState(target, depth + 1, options));\n }\n }\n }\n\n // Children — sorted by concept hierarchy, empty nodes filtered out\n if (state.children && state.children.length > 0) {\n const sorted = sortByConceptOrder(state.children.filter((c) => !isEmpty(c)));\n for (const child of sorted) {\n lines.push(\"\");\n lines.push(renderState(child, depth + 1, options));\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Concept ordering — children sorted by structure hierarchy\n// ================================================================\n\n/** Concept tree order: identity → cognition → knowledge → execution → organization. */\nconst CONCEPT_ORDER: readonly string[] = [\n // Individual — Identity\n \"identity\",\n \"background\",\n \"tone\",\n \"mindset\",\n // Individual — Cognition\n \"encounter\",\n \"experience\",\n // Individual — Knowledge\n \"principle\",\n \"procedure\",\n // Individual — Execution\n \"goal\",\n \"plan\",\n \"task\",\n // Organization\n \"charter\",\n // Position\n \"position\",\n \"duty\",\n // Project\n \"scope\",\n \"milestone\",\n \"deliverable\",\n \"wiki\",\n];\n\n/** Summarize plan/task completion for a goal heading. */\nfunction goalProgress(goal: State): string {\n let plans = 0;\n let plansDone = 0;\n let tasks = 0;\n let tasksDone = 0;\n\n function walk(node: State): void {\n if (node.name === \"plan\") {\n plans++;\n if (node.tag === \"done\" || node.tag === \"abandoned\") plansDone++;\n } else if (node.name === \"task\") {\n tasks++;\n if (node.tag === \"done\") tasksDone++;\n }\n for (const child of node.children ?? []) walk(child);\n }\n\n for (const child of goal.children ?? []) walk(child);\n if (plans === 0 && tasks === 0) return \"\";\n const parts: string[] = [];\n if (plans > 0) parts.push(`${plansDone}/${plans} plans`);\n if (tasks > 0) parts.push(`${tasksDone}/${tasks} tasks`);\n return ` [${parts.join(\", \")}]`;\n}\n\n/** A node is empty when it has no id, no information, and no children. */\nfunction isEmpty(node: State): boolean {\n return !node.id && !node.information && (!node.children || node.children.length === 0);\n}\n\n/** Sort children by concept hierarchy order. Unknown names go to the end, preserving relative order. */\nfunction sortByConceptOrder(children: readonly State[]): readonly State[] {\n return [...children].sort((a, b) => {\n const ai = CONCEPT_ORDER.indexOf(a.name);\n const bi = CONCEPT_ORDER.indexOf(b.name);\n const aOrder = ai >= 0 ? ai : CONCEPT_ORDER.length;\n const bOrder = bi >= 0 ? bi : CONCEPT_ORDER.length;\n return aOrder - bOrder;\n });\n}\n\n// ================================================================\n// Render — 3-layer output for tool results\n// ================================================================\n\nexport interface RenderOptions {\n /** The process that was executed. */\n process: string;\n /** Display name for the primary node. */\n name: string;\n /** State projection of the affected node. */\n state: State;\n /** AI cognitive hint — first-person, state-aware self-direction cue. */\n cognitiveHint?: string | null;\n /** Fold predicate — folded nodes render heading only. */\n fold?: RenderStateOptions[\"fold\"];\n}\n\n/** Render a full 3-layer output string. */\nexport function render(opts: RenderOptions): string {\n const { process, name, state, cognitiveHint, fold } = opts;\n const lines: string[] = [];\n\n // Layer 1: Status\n lines.push(describe(process, name, state));\n\n // Layer 2: Hint (static) + Cognitive hint (state-aware)\n lines.push(hint(process));\n if (cognitiveHint) {\n lines.push(`I → ${cognitiveHint}`);\n }\n\n // Layer 3: Projection — generic markdown rendering of the full state tree\n lines.push(\"\");\n lines.push(renderState(state, 1, fold ? { fold } : undefined));\n\n return lines.join(\"\\n\");\n}\n","/**\n * Project Render — format project state as readable text.\n *\n * Renders project operations into human-readable summaries.\n * Participation links show member names only (not full individual trees).\n * Milestones show progress status (#done or pending).\n */\nimport type { State } from \"@rolexjs/system\";\nimport { describe, hint } from \"./render.js\";\n\n// ================================================================\n// Types\n// ================================================================\n\nexport type ProjectAction =\n | \"launch\"\n | \"scope\"\n | \"milestone\"\n | \"achieve\"\n | \"enroll\"\n | \"remove\"\n | \"deliver\"\n | \"wiki\"\n | \"archive\";\n\n// ================================================================\n// Project Overview\n// ================================================================\n\nexport function renderProject(state: State): string {\n const lines: string[] = [];\n const id = state.id ?? \"(no id)\";\n const tag = state.tag ? ` #${state.tag}` : \"\";\n\n // Title\n lines.push(`# ${id}${tag}`);\n\n // Feature body\n if (state.information) {\n lines.push(\"\");\n lines.push(state.information);\n }\n\n // Members (participation links — compact)\n const members = state.links?.filter((l) => l.relation === \"participation\") ?? [];\n if (members.length > 0) {\n lines.push(\"\");\n lines.push(\"## Members\");\n for (const m of members) {\n const alias = m.target.alias?.length ? ` (${m.target.alias.join(\", \")})` : \"\";\n lines.push(`- ${m.target.id ?? \"(no id)\"}${alias}`);\n }\n }\n\n // Children by type\n const children = state.children ?? [];\n\n const scopes = children.filter((c) => c.name === \"scope\");\n const milestones = children.filter((c) => c.name === \"milestone\");\n const deliverables = children.filter((c) => c.name === \"deliverable\");\n const wikis = children.filter((c) => c.name === \"wiki\");\n\n if (scopes.length > 0) {\n lines.push(\"\");\n lines.push(\"## Scope\");\n for (const s of scopes) {\n if (s.information) lines.push(s.information);\n }\n }\n\n if (milestones.length > 0) {\n lines.push(\"\");\n lines.push(\"## Milestones\");\n for (const m of milestones) {\n const tag = m.tag ? ` #${m.tag}` : \"\";\n const marker = m.tag === \"done\" ? \"[x]\" : \"[ ]\";\n const title = extractFeatureTitle(m.information);\n lines.push(`- ${marker} ${m.id ?? title}${tag}`);\n if (m.information && m.id) {\n const desc = extractFeatureTitle(m.information);\n if (desc && desc !== m.id) lines.push(` ${desc}`);\n }\n }\n }\n\n if (deliverables.length > 0) {\n lines.push(\"\");\n lines.push(\"## Deliverables\");\n for (const d of deliverables) {\n const title = d.id ?? extractFeatureTitle(d.information);\n lines.push(`- ${title}`);\n }\n }\n\n if (wikis.length > 0) {\n lines.push(\"\");\n lines.push(\"## Wiki\");\n for (const w of wikis) {\n const title = w.id ?? extractFeatureTitle(w.information);\n lines.push(`- ${title}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Compose — main entry point\n// ================================================================\n\n/**\n * Render a project operation result as readable text.\n * Returns status + hint + project overview.\n */\nexport function renderProjectResult(action: ProjectAction, state: State): string {\n const name = state.id ?? state.name;\n const lines: string[] = [];\n\n // Layer 1: Status\n lines.push(describe(action, name, state));\n\n // Layer 2: Hint\n lines.push(hint(action));\n\n // Layer 3: Project overview\n // For child operations (scope, milestone, etc.), find the project parent\n const projectState = isProjectNode(state) ? state : null;\n if (projectState) {\n lines.push(\"\");\n lines.push(renderProject(projectState));\n }\n\n return lines.join(\"\\n\");\n}\n\n// ================================================================\n// Helpers\n// ================================================================\n\nfunction isProjectNode(state: State): boolean {\n return state.name === \"project\";\n}\n\nfunction extractFeatureTitle(information?: string | null): string {\n if (!information) return \"(untitled)\";\n const match = information.match(/^Feature:\\s*(.+)$/m);\n return match?.[1]?.trim() ?? information.split(\"\\n\")[0].trim();\n}\n","/**\n * Role — stateful handle returned by Rolex.activate().\n *\n * Holds roleId + RoleContext internally.\n * All operations return rendered 3-layer text (status + hint + projection).\n * MCP and CLI are pure pass-through — no render logic needed.\n *\n * Usage:\n * const role = await rolex.activate(\"sean\");\n * await role.want(\"Feature: Ship v1\", \"ship-v1\"); // → rendered string\n * await role.plan(\"Feature: Phase 1\", \"phase-1\"); // → rendered string\n * await role.finish(\"write-tests\", \"Feature: Tests written\");\n */\n\nimport type { OpResult, Ops } from \"@rolexjs/prototype\";\nimport type { RoleContext } from \"./context.js\";\nimport { type IssueAction, type LabelResolver, renderIssueResult } from \"./issue-render.js\";\nimport { type ProjectAction, renderProjectResult } from \"./project-render.js\";\nimport { render } from \"./render.js\";\n\n/**\n * Internal API surface that Role delegates to.\n * Constructed by Rolex.activate() — not part of public API.\n */\nexport interface RolexInternal {\n ops: Ops;\n saveCtx(ctx: RoleContext): void | Promise<void>;\n direct<T>(locator: string, args?: Record<string, unknown>): Promise<T>;\n resolveLabels?: LabelResolver;\n}\n\nexport class Role {\n readonly roleId: string;\n readonly ctx: RoleContext;\n private api: RolexInternal;\n\n constructor(roleId: string, ctx: RoleContext, api: RolexInternal) {\n this.roleId = roleId;\n this.ctx = ctx;\n this.api = api;\n }\n\n /** Project the individual's full state tree (used after activate). */\n async project(): Promise<string> {\n const result = await this.api.ops[\"role.focus\"](this.roleId);\n const focusedGoalId = this.ctx.focusedGoalId;\n return this.fmt(\"activate\", this.roleId, result, {\n fold: (node) =>\n (node.name === \"goal\" && node.id !== focusedGoalId) || node.name === \"requirement\",\n });\n }\n\n /** Render an OpResult into a 3-layer output string. */\n private fmt(\n process: string,\n name: string,\n result: OpResult,\n extra?: { fold?: (node: import(\"@rolexjs/system\").State) => boolean }\n ): string {\n return render({\n process,\n name,\n state: result.state,\n cognitiveHint: this.ctx.cognitiveHint(process) ?? null,\n fold: extra?.fold,\n });\n }\n\n private async save(): Promise<void> {\n await this.api.saveCtx(this.ctx);\n }\n\n // ---- Execution ----\n\n /** Focus: view or switch focused goal. Only accepts goal ids. */\n async focus(goal?: string): Promise<string> {\n const goalId = goal ?? this.ctx.requireGoalId();\n const result = await this.api.ops[\"role.focus\"](goalId);\n if (result.state.name !== \"goal\") {\n throw new Error(\n `\"${goalId}\" is a ${result.state.name}, not a goal. focus only accepts goal ids.`\n );\n }\n const switched = goalId !== this.ctx.focusedGoalId;\n this.ctx.focusedGoalId = goalId;\n if (switched) this.ctx.focusedPlanId = null;\n await this.save();\n return this.fmt(\"focus\", goalId, result);\n }\n\n /** Want: declare a goal. */\n async want(goal?: string, id?: string, alias?: readonly string[]): Promise<string> {\n const result = await this.api.ops[\"role.want\"](this.roleId, goal, id, alias);\n if (id) this.ctx.focusedGoalId = id;\n this.ctx.focusedPlanId = null;\n await this.save();\n return this.fmt(\"want\", id ?? this.roleId, result);\n }\n\n /** Plan: create a plan for the focused goal. */\n async plan(plan?: string, id?: string, after?: string, fallback?: string): Promise<string> {\n const result = await this.api.ops[\"role.plan\"](\n this.ctx.requireGoalId(),\n plan,\n id,\n after,\n fallback\n );\n if (id) this.ctx.focusedPlanId = id;\n await this.save();\n return this.fmt(\"plan\", id ?? \"plan\", result);\n }\n\n /** Todo: add a task to the focused plan. */\n async todo(task?: string, id?: string, alias?: readonly string[]): Promise<string> {\n const result = await this.api.ops[\"role.todo\"](this.ctx.requirePlanId(), task, id, alias);\n return this.fmt(\"todo\", id ?? \"task\", result);\n }\n\n /** Finish: complete a task, optionally record an encounter. */\n async finish(task: string, encounter?: string): Promise<string> {\n const result = await this.api.ops[\"role.finish\"](task, this.roleId, encounter);\n if (encounter && result.state.id) {\n this.ctx.addEncounter(result.state.id);\n }\n return this.fmt(\"finish\", task, result);\n }\n\n /** Complete: close a plan as done, record encounter. */\n async complete(plan?: string, encounter?: string): Promise<string> {\n const planId = plan ?? this.ctx.requirePlanId();\n const result = await this.api.ops[\"role.complete\"](planId, this.roleId, encounter);\n this.ctx.addEncounter(result.state.id ?? planId);\n if (this.ctx.focusedPlanId === planId) this.ctx.focusedPlanId = null;\n await this.save();\n return this.fmt(\"complete\", planId, result);\n }\n\n /** Abandon: drop a plan, record encounter. */\n async abandon(plan?: string, encounter?: string): Promise<string> {\n const planId = plan ?? this.ctx.requirePlanId();\n const result = await this.api.ops[\"role.abandon\"](planId, this.roleId, encounter);\n this.ctx.addEncounter(result.state.id ?? planId);\n if (this.ctx.focusedPlanId === planId) this.ctx.focusedPlanId = null;\n await this.save();\n return this.fmt(\"abandon\", planId, result);\n }\n\n // ---- Cognition ----\n\n /** Reflect: consume encounters → experience. Empty encounters = direct creation. */\n async reflect(encounters: string[], experience?: string, id?: string): Promise<string> {\n if (encounters.length > 0) {\n this.ctx.requireEncounterIds(encounters);\n }\n // First encounter goes through ops (creates experience + removes encounter)\n const first = encounters[0] as string | undefined;\n const result = await this.api.ops[\"role.reflect\"](first, this.roleId, experience, id);\n // Remaining encounters are consumed via forget\n for (let i = 1; i < encounters.length; i++) {\n await this.api.ops[\"role.forget\"](encounters[i]);\n }\n if (encounters.length > 0) {\n this.ctx.consumeEncounters(encounters);\n }\n if (id) this.ctx.addExperience(id);\n return this.fmt(\"reflect\", id ?? \"experience\", result);\n }\n\n /** Realize: consume experiences → principle. Empty experiences = direct creation. */\n async realize(experiences: string[], principle?: string, id?: string): Promise<string> {\n if (experiences.length > 0) {\n this.ctx.requireExperienceIds(experiences);\n }\n // First experience goes through ops (creates principle + removes experience)\n const first = experiences[0] as string | undefined;\n const result = await this.api.ops[\"role.realize\"](first, this.roleId, principle, id);\n // Remaining experiences are consumed via forget\n for (let i = 1; i < experiences.length; i++) {\n await this.api.ops[\"role.forget\"](experiences[i]);\n }\n if (experiences.length > 0) {\n this.ctx.consumeExperiences(experiences);\n }\n return this.fmt(\"realize\", id ?? \"principle\", result);\n }\n\n /** Master: create procedure, optionally consuming experiences. */\n async master(procedure: string, id?: string, experiences?: string[]): Promise<string> {\n if (experiences && experiences.length > 0) {\n this.ctx.requireExperienceIds(experiences);\n }\n // First experience goes through ops (creates procedure + removes experience)\n const first = experiences?.[0];\n const result = await this.api.ops[\"role.master\"](this.roleId, procedure, id, first);\n // Remaining experiences are consumed via forget\n if (experiences) {\n for (let i = 1; i < experiences.length; i++) {\n await this.api.ops[\"role.forget\"](experiences[i]);\n }\n this.ctx.consumeExperiences(experiences);\n }\n return this.fmt(\"master\", id ?? \"procedure\", result);\n }\n\n // ---- Knowledge management ----\n\n /** Forget: remove any node under the individual by id. */\n async forget(nodeId: string): Promise<string> {\n const result = await this.api.ops[\"role.forget\"](nodeId);\n if (this.ctx.focusedGoalId === nodeId) this.ctx.focusedGoalId = null;\n if (this.ctx.focusedPlanId === nodeId) this.ctx.focusedPlanId = null;\n await this.save();\n return this.fmt(\"forget\", nodeId, result);\n }\n\n // ---- Skills + unified entry ----\n\n /** Skill: load full skill content by locator. */\n async skill(locator: string): Promise<string> {\n return await this.api.ops[\"role.skill\"](locator);\n }\n\n /** Use: subjective execution — `!ns.method` or ResourceX locator. */\n async use<T = unknown>(locator: string, args?: Record<string, unknown>): Promise<T> {\n const result = await this.api.direct<T>(locator, args);\n // Render issue results as readable text\n if (locator.startsWith(\"!issue.\")) {\n const action = locator.slice(\"!issue.\".length) as IssueAction;\n return (await renderIssueResult(action, result, this.api.resolveLabels)) as T;\n }\n // Render project results as readable text\n if (locator.startsWith(\"!project.\")) {\n const action = locator.slice(\"!project.\".length) as ProjectAction;\n const opResult = result as { state: import(\"@rolexjs/system\").State };\n return renderProjectResult(action, opResult.state) as T;\n }\n return result;\n }\n}\n","/**\n * Rolex — thin API shell.\n *\n * Public API:\n * genesis() — create the world on first run\n * activate(id) — returns a stateful Role handle\n * direct(loc, args) — direct the world to execute an instruction\n *\n * All operation implementations live in @rolexjs/prototype (createOps).\n * Rolex just wires Platform → ops and manages Role lifecycle.\n */\n\nimport type { Platform, RoleXRepository } from \"@rolexjs/core\";\nimport * as C from \"@rolexjs/core\";\nimport { createOps, directives, type Ops, toArgs } from \"@rolexjs/prototype\";\nimport type { Initializer, Runtime, Structure } from \"@rolexjs/system\";\nimport { createIssueX, type IssueX } from \"issuexjs\";\nimport type { ResourceX } from \"resourcexjs\";\nimport { createResourceX, setProvider } from \"resourcexjs\";\nimport { RoleContext } from \"./context.js\";\nimport { findInState } from \"./find.js\";\nimport { Role, type RolexInternal } from \"./role.js\";\n\n/** Summary entry returned by census.list. */\nexport interface CensusEntry {\n id?: string;\n name: string;\n tag?: string;\n}\n\nexport class Rolex {\n private rt: Runtime;\n private ops!: Ops;\n private resourcex?: ResourceX;\n private issuex?: IssueX;\n private repo: RoleXRepository;\n private readonly initializer?: Initializer;\n\n private readonly bootstrap: readonly string[];\n private society!: Structure;\n private past!: Structure;\n\n private constructor(platform: Platform) {\n this.repo = platform.repository;\n this.rt = this.repo.runtime;\n this.initializer = platform.initializer;\n this.bootstrap = platform.bootstrap ?? [];\n\n // Create ResourceX from injected provider\n if (platform.resourcexProvider) {\n setProvider(platform.resourcexProvider);\n this.resourcex = createResourceX(\n platform.resourcexExecutor\n ? { isolator: \"custom\", executor: platform.resourcexExecutor }\n : undefined\n );\n }\n\n // Create IssueX from injected provider\n if (platform.issuexProvider) {\n this.issuex = createIssueX({ provider: platform.issuexProvider });\n }\n }\n\n /** Create a Rolex instance from a Platform (async due to Runtime initialization). */\n static async create(platform: Platform): Promise<Rolex> {\n const rolex = new Rolex(platform);\n await rolex.init();\n return rolex;\n }\n\n /** Async initialization — called by Rolex.create(). */\n private async init(): Promise<void> {\n // Ensure world roots exist\n const roots = await this.rt.roots();\n this.society =\n roots.find((r) => r.name === \"society\") ?? (await this.rt.create(null, C.society));\n\n const societyState = await this.rt.project(this.society);\n const existingPast = societyState.children?.find((c) => c.name === \"past\");\n this.past = existingPast ?? (await this.rt.create(this.society, C.past));\n\n // Create ops from prototype — all operation implementations\n this.ops = createOps({\n rt: this.rt,\n society: this.society,\n past: this.past,\n resolve: async (id: string) => {\n const node = await this.find(id);\n if (!node) throw new Error(`\"${id}\" not found.`);\n return node;\n },\n find: (id: string) => this.find(id),\n resourcex: this.resourcex,\n issuex: this.issuex,\n prototype: this.repo.prototype,\n direct: (locator: string, args?: Record<string, unknown>) => this.direct(locator, args),\n });\n }\n\n /** Genesis — create the world on first run. Settles built-in prototypes. */\n async genesis(): Promise<void> {\n await this.initializer?.bootstrap();\n // Settle bootstrap prototypes\n for (const source of this.bootstrap) {\n await this.direct(\"!prototype.settle\", { source });\n }\n }\n\n /**\n * Activate a role — returns a stateful Role handle.\n *\n * If the individual does not exist in runtime but a prototype is registered,\n * auto-born the individual first.\n */\n async activate(individual: string): Promise<Role> {\n let node = await this.find(individual);\n if (!node) {\n const hasProto = Object.hasOwn(this.repo.prototype.list(), individual);\n if (hasProto) {\n await this.ops[\"individual.born\"](undefined, individual);\n node = (await this.find(individual))!;\n } else {\n throw new Error(`\"${individual}\" not found.`);\n }\n }\n const state = await this.rt.project(node);\n const ctx = new RoleContext(individual);\n ctx.rehydrate(state);\n\n // Restore persisted focus (only override rehydrate default when persisted value is valid)\n const persisted = await this.repo.loadContext(individual);\n if (persisted) {\n if (persisted.focusedGoalId && (await this.find(persisted.focusedGoalId))) {\n ctx.focusedGoalId = persisted.focusedGoalId;\n }\n if (persisted.focusedPlanId && (await this.find(persisted.focusedPlanId))) {\n ctx.focusedPlanId = persisted.focusedPlanId;\n }\n }\n\n // Build internal API for Role — ops + ctx persistence\n const ops = this.ops;\n const repo = this.repo;\n const saveCtx = async (c: RoleContext) => {\n await repo.saveContext(c.roleId, {\n focusedGoalId: c.focusedGoalId,\n focusedPlanId: c.focusedPlanId,\n });\n };\n\n const api: RolexInternal = {\n ops,\n saveCtx,\n direct: this.direct.bind(this),\n resolveLabels: this.issuex\n ? async (ids: string[]) => {\n const names: string[] = [];\n for (const id of ids) {\n const label = await this.issuex!.getLabel(id);\n if (label) names.push(label.name);\n }\n return names;\n }\n : undefined,\n };\n\n return new Role(individual, ctx, api);\n }\n\n /** Find a node by id or alias across the entire society tree. Internal use only. */\n private async find(id: string): Promise<Structure | null> {\n const state = await this.rt.project(this.society);\n return findInState(state, id);\n }\n\n /**\n * Direct the world to execute an instruction.\n *\n * - `!namespace.method` — dispatch to ops\n * - anything else — delegate to ResourceX `ingest`\n */\n async direct<T = unknown>(locator: string, args?: Record<string, unknown>): Promise<T> {\n if (locator.startsWith(\"!\")) {\n const command = locator.slice(1);\n const fn = this.ops[command];\n if (!fn) {\n const hint = directives[\"identity-ethics\"]?.[\"on-unknown-command\"] ?? \"\";\n throw new Error(\n `Unknown command \"${locator}\".\\n\\n` +\n \"You may be guessing the command name. \" +\n \"Load the relevant skill first with skill(locator) to learn the correct syntax.\\n\\n\" +\n hint\n );\n }\n return (await fn(...toArgs(command, args ?? {}))) as T;\n }\n if (!this.resourcex) throw new Error(\"ResourceX is not available.\");\n return this.resourcex.ingest<T>(locator, args);\n }\n}\n\n/** Create a Rolex instance from a Platform. */\nexport async function createRoleX(platform: Platform): Promise<Rolex> {\n return Rolex.create(platform);\n}\n"],"mappings":"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","names":["c","tag","directives","hint","directives"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rolexjs",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "RoleX - AI Agent Role Management Framework",
5
5
  "keywords": [
6
6
  "rolex",
@@ -38,15 +38,15 @@
38
38
  "clean": "rm -rf dist"
39
39
  },
40
40
  "dependencies": {
41
- "@rolexjs/core": "^1.5.0",
42
- "@rolexjs/genesis": "^1.5.0",
43
- "@rolexjs/system": "^1.5.0",
44
- "@rolexjs/parser": "^1.5.0",
41
+ "@rolexjs/core": "~1.6.0",
42
+ "@rolexjs/prototype": "~1.6.0",
43
+ "@rolexjs/system": "~1.6.0",
44
+ "@rolexjs/parser": "~1.6.0",
45
45
  "issuexjs": "^0.2.0",
46
46
  "resourcexjs": "^2.14.0"
47
47
  },
48
48
  "devDependencies": {
49
- "@rolexjs/local-platform": "^1.5.0"
49
+ "@rolexjs/local-platform": "~1.6.0"
50
50
  },
51
51
  "publishConfig": {
52
52
  "access": "public"