@telora/mcp-products 0.22.104 → 0.22.107

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.
@@ -1 +1 @@
1
- export declare const AUDIT_TREE_AUTHORING_GUIDE = "# Audit Tree-Authoring Protocol (CRT -> injections -> anchored plan)\n\nA safe audit emits a **tree and a plan, never a task checklist.** You are\nREAD-ONLY: discovery only. You author the intent structure -- the current\nreality, its root causes, and the leverage points -- and you anchor a plan a\nhuman reviews before any fix runs. You do NOT fix anything, and you do NOT\nfile remediation Task/Bug issues. Remediation is scoped LATER, one root cause\nat a time, from the injections you ratify here -- so there is no flat checklist\nto complete with completion-vigor and churn stays bounded to the real defects.\n\nTwo artifacts, one purpose:\n- **CRT (current reality)** -- entities + undesired effects (UDEs) wired by\n causal edges, surfacing the systemic structure so cross-area root causes\n become visible in ONE focus tree (NOT one delivery per audit area).\n- **FRT (future reality)** -- injections at the root causes, self-validated to\n confirm they flip the UDEs, then anchored to planning deliveries whose\n acceptance is the future-state desired effect each injection produces.\n\n## Rounds (distinct jobs -- not \"find more\")\n1. **Facts -> CRT.** Author the current reality. Create the focus's reality\n tree if none exists (`telora_reality_tree action=create`), then add an\n **entity** node per real component/observation and an **undesired_effect**\n (UDE) node per observed problem (`telora_reality_tree_node action=create`).\n State what IS, in evidence terms -- not a fix.\n2. **Relationships -> causal edges.** Wire cause -> effect with\n `telora_reality_tree_edge action=create` (cause node -> effect node). This\n is the load-bearing round: edges turn a list of symptoms into a causal\n structure, so a single deep cause feeding many surface UDEs across different\n audit areas becomes visible as ONE root in ONE tree -- which is exactly what\n stops the \"one delivery per area\" sprawl.\n3. **Leverage -> injections.** Propose **injection** nodes at the LOWEST / root\n causes (the nodes with the most downstream UDEs), not at the symptoms.\n One injection at a root can clear a whole subtree of UDEs; that leverage is\n the whole reason for the tree.\n4. **Self-validate -> derive_frt.** Call\n `telora_reality_tree action=derive_frt` with the treeId. This is read-only:\n it returns the cleared/flipped UDE sets the injections produce. Confirm each\n injection flips the UDEs you targeted. If a UDE is left unresolved by your\n injection set, REPORT it -- do not hide it and do not lower the bar to make\n the tree look clean. An honest \"this UDE has no injection yet\" is signal; a\n silently dropped UDE is noise.\n5. **Anchor the plan -> injection-anchored deliveries.** For each ratified\n injection, create a remediation delivery with\n `telora_product_delivery action=create`, passing\n `injectionNodeId=<the injection node>` and\n `executionStatus=\"planning\"`. Set its acceptance to the **FRT desired\n effect** -- the future-state the injection produces (what becomes true once\n the root cause is cleared), NOT a list of edits. This is the navigable plan\n the human reviews in the canvas before anything executes.\n\nExplicitly, in the audit phase your output is **the tree + the anchored\nplanning deliveries only.** Do NOT create remediation Task or Bug issues. Do\nNOT create one delivery per audit area -- unify the audit into ONE focus tree\nand let each injection (each root cause) anchor exactly one planning delivery.\nDo NOT attempt fixes.\n\n## Statement quality (Goldratt Categories of Legitimate Reservation)\nHold every node to three statement-quality reservations AS YOU WRITE IT --\ninline with the rounds above, not a separate pass:\n- **Clarity.** Each statement is ONE unambiguous declarative sentence that\n reads standalone -- no jargon or pronoun a reviewer must guess at.\n- **Entity Existence.** Each entity / UDE names a COMPLETE, REAL state that\n actually exists, not a sentence fragment or a vague gesture. Prefer a\n grounded observation over an invented abstraction.\n- **Tautology.** In the relationships round, no cause -> effect pair may be\n circular: an effect must NOT be offered as the reason its own cause exists.\n\nA node that fails any of these radiates unearned certainty; fix the statement\nbefore you wire it. These reservations cost no extra call -- they are how you\nwrite each node, not a gate you run afterward.\n\n## Two hard integrity gates (deterministic; a tree must pass to present)\nThe tree dump (`telora_reality_tree action=dump`) computes and surfaces two\ndeterministic doubt-revealer gates near its header, so unearned certainty\ncannot hide:\n- **Connectivity (NO ORPHANS).** A node with zero edges of ANY type AND no\n `evidence` is an ORPHAN -- it floats, neither wired into the causal graph nor\n folded into its own evidence. A single orphan makes the tree **NOT\n presentable**; the dump names the orphan seqs. Fix it: wire the node to a\n cause/effect with an edge, or ground it by setting `evidence`. An orphan is\n reality with nothing to measure it against -- it must not survive to review.\n- **Evidence-or-assumed.** An `entity` / `undesired_effect` with empty/null\n `evidence` renders an `[assumed]` marker; with evidence it renders\n `(evidence)`. Assumed is NOT a violation -- it is an honest hedge that the\n claim is unearned certainty until grounded. Set `evidence` on the nodes you\n can actually observe; leave the rest visibly `[assumed]` rather than dressing\n a guess up as a proven cause.\n\n## Why this shape (the discipline it enforces)\nA flat checklist invites an agent to \"complete\" it -- to keep going until every\nbox is ticked, which churns code well beyond the real defects. An\ninjection-anchored plan inverts that: remediation is scoped one root cause at a\ntime from a ratified injection, with acceptance pinned to a desired effect, so\nthere is nothing to over-complete. The human reviews the structured CRT + FRT\nin the canvas first, so a wrong root cause is caught before any code moves.";
1
+ export declare const AUDIT_TREE_AUTHORING_GUIDE = "# Audit Tree-Authoring Protocol (CRT -> injections -> anchored plan)\n\nA safe audit emits a **tree and a plan, never a task checklist.** You are\nREAD-ONLY: discovery only. You author the intent structure -- the current\nreality, its root causes, and the leverage points -- and you anchor a plan of\ninjection-anchored remediation deliveries. You do NOT fix anything, and you do\nNOT file remediation Task/Bug issues. Remediation is scoped LATER, one root\ncause at a time, from the injections you anchor here -- so there is no flat\nchecklist to complete with completion-vigor and churn stays bounded to the real\ndefects.\n\nWhat happens to the deliveries you anchor depends on the focus posture, so do\nnot assume a human gate that may not exist:\n- On a **read-only audit focus**, the anchored deliveries rest at `planning`\n behind the human ratify gate -- a human reviews the plan and ratifies it\n before anything executes.\n- On a **live, past-planning focus**, the anchored deliveries are created\n `queued` and execute AUTONOMOUSLY through the normal review gate -- there is\n no human step before they run.\n\nEither way, if you believe the work must NOT run, that belief goes to an\nescalation (`telora_agent action=escalate`), never into a delivery's\nacceptance criteria.\n\nTwo artifacts, one purpose:\n- **CRT (current reality)** -- entities + undesired effects (UDEs) wired by\n causal edges, surfacing the systemic structure so cross-area root causes\n become visible in ONE focus tree (NOT one delivery per audit area).\n- **FRT (future reality)** -- injections at the root causes, self-validated to\n confirm they flip the UDEs, then anchored to planning deliveries whose\n acceptance is the future-state desired effect each injection produces.\n\n## Rounds (distinct jobs -- not \"find more\")\n1. **Facts -> CRT.** Author the current reality. Create the focus's reality\n tree if none exists (`telora_reality_tree action=create`), then add an\n **entity** node per real component/observation and an **undesired_effect**\n (UDE) node per observed problem (`telora_reality_tree_node action=create`).\n State what IS, in evidence terms -- not a fix.\n2. **Relationships -> causal edges.** Wire cause -> effect with\n `telora_reality_tree_edge action=create` (cause node -> effect node). This\n is the load-bearing round: edges turn a list of symptoms into a causal\n structure, so a single deep cause feeding many surface UDEs across different\n audit areas becomes visible as ONE root in ONE tree -- which is exactly what\n stops the \"one delivery per area\" sprawl.\n3. **Leverage -> injections.** Propose **injection** nodes at the LOWEST / root\n causes (the nodes with the most downstream UDEs), not at the symptoms.\n One injection at a root can clear a whole subtree of UDEs; that leverage is\n the whole reason for the tree.\n4. **Self-validate -> derive_frt.** Call\n `telora_reality_tree action=derive_frt` with the treeId. This is read-only:\n it returns the cleared/flipped UDE sets the injections produce. Confirm each\n injection flips the UDEs you targeted. If a UDE is left unresolved by your\n injection set, REPORT it -- do not hide it and do not lower the bar to make\n the tree look clean. An honest \"this UDE has no injection yet\" is signal; a\n silently dropped UDE is noise.\n5. **Anchor the plan -> injection-anchored deliveries.** For each injection,\n create a remediation delivery with\n `telora_product_delivery action=create`, passing\n `injectionNodeId=<the injection node>` and `executionStatus=\"planning\"`.\n Set its acceptance to the **FRT desired effect** -- the future-state the\n injection produces (what becomes true once the root cause is cleared), NOT a\n list of edits and NOT process instructions.\n\nExplicitly, in the audit phase your output is **the tree + the anchored\nplanning deliveries only.** Do NOT create remediation Task or Bug issues. Do\nNOT create one delivery per audit area -- unify the audit into ONE focus tree\nand let each injection (each root cause) anchor exactly one planning delivery.\nDo NOT attempt fixes.\n\n## Acceptance criteria carry the future state ONLY -- never a hold\nA remediation delivery's acceptanceCriteria state ONLY the **FRT desired\neffect**: the future-state that becomes true once the root cause is cleared.\nAcceptanceCriteria are NOT workflow state and NOT a channel to a human. Never\nwrite into acceptanceCriteria:\n- process instructions or step-by-step directions to the executing team,\n- a hold, a pause, or an approval requirement (e.g. \"HOLD FOR HUMAN REVIEW\n BEFORE EXECUTING\", \"do not execute until ...\", \"wait for sign-off\"),\n- status commentary or notes about what you think should happen next.\n\nProse is invisible to the workflow: a hold written into acceptanceCriteria\ngates nothing, and on a live focus the executing team either obeys a stop the\nmachine never enforces or is misled by an instruction it should never have been\ngiven. If you believe the work must NOT run yet -- a dependency is missing, or\nthe decision needs human intent -- the ONLY channel for that belief is an\nescalation via `telora_agent action=escalate`. Raise the doubt as an\nescalation; never encode it as acceptance-criteria text.\n\n## Statement quality (Goldratt Categories of Legitimate Reservation)\nHold every node to three statement-quality reservations AS YOU WRITE IT --\ninline with the rounds above, not a separate pass:\n- **Clarity.** Each statement is ONE unambiguous declarative sentence that\n reads standalone -- no jargon or pronoun a reviewer must guess at.\n- **Entity Existence.** Each entity / UDE names a COMPLETE, REAL state that\n actually exists, not a sentence fragment or a vague gesture. Prefer a\n grounded observation over an invented abstraction.\n- **Tautology.** In the relationships round, no cause -> effect pair may be\n circular: an effect must NOT be offered as the reason its own cause exists.\n\nA node that fails any of these radiates unearned certainty; fix the statement\nbefore you wire it. These reservations cost no extra call -- they are how you\nwrite each node, not a gate you run afterward.\n\n## Two hard integrity gates (deterministic; a tree must pass to present)\nThe tree dump (`telora_reality_tree action=dump`) computes and surfaces two\ndeterministic doubt-revealer gates near its header, so unearned certainty\ncannot hide:\n- **Connectivity (NO ORPHANS).** A node with zero edges of ANY type AND no\n `evidence` is an ORPHAN -- it floats, neither wired into the causal graph nor\n folded into its own evidence. A single orphan makes the tree **NOT\n presentable**; the dump names the orphan seqs. Fix it: wire the node to a\n cause/effect with an edge, or ground it by setting `evidence`. An orphan is\n reality with nothing to measure it against -- it must not survive to review.\n- **Evidence-or-assumed.** An `entity` / `undesired_effect` with empty/null\n `evidence` renders an `[assumed]` marker; with evidence it renders\n `(evidence)`. Assumed is NOT a violation -- it is an honest hedge that the\n claim is unearned certainty until grounded. Set `evidence` on the nodes you\n can actually observe; leave the rest visibly `[assumed]` rather than dressing\n a guess up as a proven cause.\n\n## Why this shape (the discipline it enforces)\nA flat checklist invites an agent to \"complete\" it -- to keep going until every\nbox is ticked, which churns code well beyond the real defects. An\ninjection-anchored plan inverts that: remediation is scoped one root cause at a\ntime from an injection, with acceptance pinned to a desired effect, so there is\nnothing to over-complete. The structured CRT + FRT make a wrong root cause\nlegible as a plan -- catchable up front rather than only after code has moved.";
@@ -6,35 +6,28 @@
6
6
  //
7
7
  // The job of a safe audit is to emit a navigable PLAN -- a Current Reality Tree
8
8
  // (CRT) plus a Future Reality Tree (FRT) of proposed injections, anchored to
9
- // remediation deliveries a human reviews BEFORE any fix executes. The failure
10
- // mode this kills: a flat task checklist the agent completes with
9
+ // remediation deliveries. What happens to those deliveries depends on the focus
10
+ // POSTURE, and this guide states BOTH cases rather than promising a human gate
11
+ // that may not exist: on a read-only audit focus they rest at planning behind
12
+ // the human ratify gate; on a live, past-planning focus they queue and execute
13
+ // autonomously. telora_discover has no posture at load time, so the guide
14
+ // cannot narrow to one -- it must be honest about both. The failure mode this
15
+ // kills: an assessor told the read-only model on a live focus manufactures the
16
+ // missing hold in prose, and a flat task checklist the agent completes with
11
17
  // completion-vigor, churning code well past the real defects.
12
18
  //
13
- // SOURCE OF TRUTH: this constant is also mirrored verbatim into the daemon's
14
- // audit assessor prompt (packages/daemon/src/audit-phase.ts AUDIT_PROMPT). The
19
+ // SOURCE OF TRUTH for the posture-neutral discipline (the AUDIT_GUIDE_SHARED
20
+ // const below) is mirrored verbatim into the daemon's audit assessor prompt
21
+ // (packages/daemon/src/audit-phase.ts, the AUDIT_GUIDE_SHARED constant). The
15
22
  // daemon cannot runtime-import this MCP package (no cross-package runtime
16
- // import), so the prose is duplicated there with a comment pointing back here.
17
- // When you change this guide, update AUDIT_PROMPT to match.
23
+ // import), so the prose is duplicated there. The required-sync invariant is
24
+ // held MECHANICALLY, not by this comment: the daemon test audit-guide-sync.test.ts
25
+ // extracts the text between the begin/end sentinel lines in both files and
26
+ // fails on any drift. The sentinel lines wrap ONLY the const declaration, so
27
+ // the extracted region is identical. Edit both, or the build goes red.
18
28
  // ---------------------------------------------------------------------------
19
- export const AUDIT_TREE_AUTHORING_GUIDE = `# Audit Tree-Authoring Protocol (CRT -> injections -> anchored plan)
20
-
21
- A safe audit emits a **tree and a plan, never a task checklist.** You are
22
- READ-ONLY: discovery only. You author the intent structure -- the current
23
- reality, its root causes, and the leverage points -- and you anchor a plan a
24
- human reviews before any fix runs. You do NOT fix anything, and you do NOT
25
- file remediation Task/Bug issues. Remediation is scoped LATER, one root cause
26
- at a time, from the injections you ratify here -- so there is no flat checklist
27
- to complete with completion-vigor and churn stays bounded to the real defects.
28
-
29
- Two artifacts, one purpose:
30
- - **CRT (current reality)** -- entities + undesired effects (UDEs) wired by
31
- causal edges, surfacing the systemic structure so cross-area root causes
32
- become visible in ONE focus tree (NOT one delivery per audit area).
33
- - **FRT (future reality)** -- injections at the root causes, self-validated to
34
- confirm they flip the UDEs, then anchored to planning deliveries whose
35
- acceptance is the future-state desired effect each injection produces.
36
-
37
- ## Rounds (distinct jobs -- not "find more")
29
+ // SHARED-AUDIT-GUIDE:BEGIN
30
+ const AUDIT_GUIDE_SHARED = `## Rounds (distinct jobs -- not "find more")
38
31
  1. **Facts -> CRT.** Author the current reality. Create the focus's reality
39
32
  tree if none exists (\`telora_reality_tree action=create\`), then add an
40
33
  **entity** node per real component/observation and an **undesired_effect**
@@ -57,14 +50,13 @@ Two artifacts, one purpose:
57
50
  injection set, REPORT it -- do not hide it and do not lower the bar to make
58
51
  the tree look clean. An honest "this UDE has no injection yet" is signal; a
59
52
  silently dropped UDE is noise.
60
- 5. **Anchor the plan -> injection-anchored deliveries.** For each ratified
61
- injection, create a remediation delivery with
53
+ 5. **Anchor the plan -> injection-anchored deliveries.** For each injection,
54
+ create a remediation delivery with
62
55
  \`telora_product_delivery action=create\`, passing
63
- \`injectionNodeId=<the injection node>\` and
64
- \`executionStatus="planning"\`. Set its acceptance to the **FRT desired
65
- effect** -- the future-state the injection produces (what becomes true once
66
- the root cause is cleared), NOT a list of edits. This is the navigable plan
67
- the human reviews in the canvas before anything executes.
56
+ \`injectionNodeId=<the injection node>\` and \`executionStatus="planning"\`.
57
+ Set its acceptance to the **FRT desired effect** -- the future-state the
58
+ injection produces (what becomes true once the root cause is cleared), NOT a
59
+ list of edits and NOT process instructions.
68
60
 
69
61
  Explicitly, in the audit phase your output is **the tree + the anchored
70
62
  planning deliveries only.** Do NOT create remediation Task or Bug issues. Do
@@ -72,6 +64,24 @@ NOT create one delivery per audit area -- unify the audit into ONE focus tree
72
64
  and let each injection (each root cause) anchor exactly one planning delivery.
73
65
  Do NOT attempt fixes.
74
66
 
67
+ ## Acceptance criteria carry the future state ONLY -- never a hold
68
+ A remediation delivery's acceptanceCriteria state ONLY the **FRT desired
69
+ effect**: the future-state that becomes true once the root cause is cleared.
70
+ AcceptanceCriteria are NOT workflow state and NOT a channel to a human. Never
71
+ write into acceptanceCriteria:
72
+ - process instructions or step-by-step directions to the executing team,
73
+ - a hold, a pause, or an approval requirement (e.g. "HOLD FOR HUMAN REVIEW
74
+ BEFORE EXECUTING", "do not execute until ...", "wait for sign-off"),
75
+ - status commentary or notes about what you think should happen next.
76
+
77
+ Prose is invisible to the workflow: a hold written into acceptanceCriteria
78
+ gates nothing, and on a live focus the executing team either obeys a stop the
79
+ machine never enforces or is misled by an instruction it should never have been
80
+ given. If you believe the work must NOT run yet -- a dependency is missing, or
81
+ the decision needs human intent -- the ONLY channel for that belief is an
82
+ escalation via \`telora_agent action=escalate\`. Raise the doubt as an
83
+ escalation; never encode it as acceptance-criteria text.
84
+
75
85
  ## Statement quality (Goldratt Categories of Legitimate Reservation)
76
86
  Hold every node to three statement-quality reservations AS YOU WRITE IT --
77
87
  inline with the rounds above, not a separate pass:
@@ -108,7 +118,41 @@ cannot hide:
108
118
  A flat checklist invites an agent to "complete" it -- to keep going until every
109
119
  box is ticked, which churns code well beyond the real defects. An
110
120
  injection-anchored plan inverts that: remediation is scoped one root cause at a
111
- time from a ratified injection, with acceptance pinned to a desired effect, so
112
- there is nothing to over-complete. The human reviews the structured CRT + FRT
113
- in the canvas first, so a wrong root cause is caught before any code moves.`;
121
+ time from an injection, with acceptance pinned to a desired effect, so there is
122
+ nothing to over-complete. The structured CRT + FRT make a wrong root cause
123
+ legible as a plan -- catchable up front rather than only after code has moved.`;
124
+ // SHARED-AUDIT-GUIDE:END
125
+ export const AUDIT_TREE_AUTHORING_GUIDE = `# Audit Tree-Authoring Protocol (CRT -> injections -> anchored plan)
126
+
127
+ A safe audit emits a **tree and a plan, never a task checklist.** You are
128
+ READ-ONLY: discovery only. You author the intent structure -- the current
129
+ reality, its root causes, and the leverage points -- and you anchor a plan of
130
+ injection-anchored remediation deliveries. You do NOT fix anything, and you do
131
+ NOT file remediation Task/Bug issues. Remediation is scoped LATER, one root
132
+ cause at a time, from the injections you anchor here -- so there is no flat
133
+ checklist to complete with completion-vigor and churn stays bounded to the real
134
+ defects.
135
+
136
+ What happens to the deliveries you anchor depends on the focus posture, so do
137
+ not assume a human gate that may not exist:
138
+ - On a **read-only audit focus**, the anchored deliveries rest at \`planning\`
139
+ behind the human ratify gate -- a human reviews the plan and ratifies it
140
+ before anything executes.
141
+ - On a **live, past-planning focus**, the anchored deliveries are created
142
+ \`queued\` and execute AUTONOMOUSLY through the normal review gate -- there is
143
+ no human step before they run.
144
+
145
+ Either way, if you believe the work must NOT run, that belief goes to an
146
+ escalation (\`telora_agent action=escalate\`), never into a delivery's
147
+ acceptance criteria.
148
+
149
+ Two artifacts, one purpose:
150
+ - **CRT (current reality)** -- entities + undesired effects (UDEs) wired by
151
+ causal edges, surfacing the systemic structure so cross-area root causes
152
+ become visible in ONE focus tree (NOT one delivery per audit area).
153
+ - **FRT (future reality)** -- injections at the root causes, self-validated to
154
+ confirm they flip the UDEs, then anchored to planning deliveries whose
155
+ acceptance is the future-state desired effect each injection produces.
156
+
157
+ ${AUDIT_GUIDE_SHARED}`;
114
158
  //# sourceMappingURL=auditTreeAuthoringGuide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auditTreeAuthoringGuide.js","sourceRoot":"","sources":["../../src/handlers/auditTreeAuthoringGuide.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,gFAAgF;AAChF,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAC9E,kEAAkE;AAClE,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,0EAA0E;AAC1E,+EAA+E;AAC/E,4DAA4D;AAC5D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA8FkC,CAAC"}
1
+ {"version":3,"file":"auditTreeAuthoringGuide.js","sourceRoot":"","sources":["../../src/handlers/auditTreeAuthoringGuide.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,gFAAgF;AAChF,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAC1E,8EAA8E;AAC9E,+EAA+E;AAC/E,4EAA4E;AAC5E,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,mFAAmF;AACnF,2EAA2E;AAC3E,6EAA6E;AAC7E,uEAAuE;AACvE,8EAA8E;AAE9E,2BAA2B;AAC3B,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6FoD,CAAC;AAChF,yBAAyB;AAEzB,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCxC,kBAAkB,EAAE,CAAC"}
@@ -12,9 +12,11 @@ import { callProductApi, successResult, wrapHandler, } from "../shared.js";
12
12
  export function registerSessionStateTool(server, getCreds) {
13
13
  server.tool("telora_session_state", "Session bootstrap: returns Telora connection state in a single payload " +
14
14
  "(connected URL, organization, product, active focus + role, pending " +
15
- "delivery counts). Used by the SessionStart hook to surface state at " +
16
- "chat open. Optional productId; auto-resolved when the organization " +
17
- "has a single product. " +
15
+ "delivery counts). activeFocus also carries an operator-stop indicator " +
16
+ "(held: true + operatorStoppedAt timestamp) so a stop is confirmable " +
17
+ "without reading the daemon log. Used by the SessionStart hook to surface " +
18
+ "state at chat open. Optional productId; auto-resolved when the " +
19
+ "organization has a single product. " +
18
20
  "NOTE: branch state (commits ahead of integration) is NOT included in " +
19
21
  "this response -- the server has no git access. For branch state, run " +
20
22
  "`telora-daemon session-state --json` in the repo root.", {
@@ -1 +1 @@
1
- {"version":3,"file":"sessionStateHandler.js","sourceRoot":"","sources":["../../src/handlers/sessionStateHandler.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2CAA2C;AAC3C,EAAE;AACF,sEAAsE;AACtE,0EAA0E;AAC1E,oEAAoE;AACpE,0EAA0E;AAC1E,uDAAuD;AACvD,8EAA8E;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,GAEZ,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,wBAAwB,CACtC,MAAiB,EACjB,QAAkB;IAElB,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,yEAAyE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,qEAAqE;QACrE,wBAAwB;QACxB,uEAAuE;QACvE,uEAAuE;QACvE,wDAAwD,EAC1D;QACE,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,EAAE;aACV,QAAQ,CACP,oEAAoE,CACrE;KACJ,EACD,WAAW,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAA4B,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAClE,IAAI,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAA4B,CAAC;QAC9E,uEAAuE;QACvE,gCAAgC;QAChC,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9D,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sessionStateHandler.js","sourceRoot":"","sources":["../../src/handlers/sessionStateHandler.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2CAA2C;AAC3C,EAAE;AACF,sEAAsE;AACtE,0EAA0E;AAC1E,oEAAoE;AACpE,0EAA0E;AAC1E,uDAAuD;AACvD,8EAA8E;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,GAEZ,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,wBAAwB,CACtC,MAAiB,EACjB,QAAkB;IAElB,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,yEAAyE;QACvE,sEAAsE;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,2EAA2E;QAC3E,iEAAiE;QACjE,qCAAqC;QACrC,uEAAuE;QACvE,uEAAuE;QACvE,wDAAwD,EAC1D;QACE,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,EAAE;aACV,QAAQ,CACP,oEAAoE,CACrE;KACJ,EACD,WAAW,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAA4B,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAClE,IAAI,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAA4B,CAAC;QAC9E,uEAAuE;QACvE,gCAAgC;QAChC,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9D,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telora/mcp-products",
3
- "version": "0.22.104",
3
+ "version": "0.22.107",
4
4
  "description": "MCP server exposing Telora product operations to Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@modelcontextprotocol/sdk": "^1.12.1",
41
- "@telora/daemon-core": "^0.2.69",
41
+ "@telora/daemon-core": "^0.2.74",
42
42
  "ts-morph": "^28.0.0",
43
43
  "zod": "^4.3.6"
44
44
  },