@telora/mcp-products 0.22.113 → 0.22.115
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.
|
@@ -10,4 +10,39 @@ import { type GetCreds } from "../shared.js";
|
|
|
10
10
|
* external_wait / unset). Pure so the refusal is unit-tested without the network.
|
|
11
11
|
*/
|
|
12
12
|
export declare function directedHoldFilingRefusal(disposition: string | undefined): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* An agent_resolvable filing is MACHINE-OWNED: hidden from the operator inbox
|
|
15
|
+
* and consumed either by the focus's next coding spawn (which reaches it by
|
|
16
|
+
* focusId) or, past a bound, by the org-wide promotion sweep. A filing that
|
|
17
|
+
* carries NO focus anchor -- exactly what an INTERACTIVE session produces,
|
|
18
|
+
* holding neither a focus nor an agent session -- has no active machine consumer:
|
|
19
|
+
* it sits invisible until the org-wide promotion bound elapses. That is a
|
|
20
|
+
* write-only sink at file time, so refuse it AT SOURCE and name the disposition
|
|
21
|
+
* that reaches a reader immediately (needs_operator, which the operator inbox
|
|
22
|
+
* shows). Disposition is immutable after filing (escalation_update accepts only
|
|
23
|
+
* status/resolutionNotes/answer), so the check must land here, not as a later
|
|
24
|
+
* correction path.
|
|
25
|
+
*
|
|
26
|
+
* Returns the refusal message when the filing is agent_resolvable AND carries no
|
|
27
|
+
* focus anchor; null when it is reachable (a focus-anchored team-session filing)
|
|
28
|
+
* or is not agent_resolvable. Pure so the refusal is unit-tested without the
|
|
29
|
+
* network. Complements the daemon-side org-wide promotion sweep: this stops NEW
|
|
30
|
+
* sinks, the sweep drains filings that predate the check or arrive from an older
|
|
31
|
+
* client.
|
|
32
|
+
*/
|
|
33
|
+
export declare function unreachableAgentResolvableRefusal(disposition: string | undefined, anchors: {
|
|
34
|
+
focusId?: string;
|
|
35
|
+
}): string | null;
|
|
36
|
+
/**
|
|
37
|
+
* A cross-product blocker (this product blocked by ANOTHER product) has a
|
|
38
|
+
* first-class AGENT-facing path: telora_product_request (nexus domain). The
|
|
39
|
+
* escalation -> Nexus bridge in the daemon (maybeRouteToNexus, escalation-bridge.ts)
|
|
40
|
+
* is DAEMON-INTERNAL: it fires only inside the daemon's own fileEscalation
|
|
41
|
+
* (PRD / system-filed escalations), never from this agent escalate surface, which
|
|
42
|
+
* posts directly to the edge escalation_create and does not touch the bridge. So
|
|
43
|
+
* an agent that needs to move work to another product files a telora_product_request,
|
|
44
|
+
* not an escalation. Exported so the guidance is a single pinned string a test can
|
|
45
|
+
* assert names the reachable path.
|
|
46
|
+
*/
|
|
47
|
+
export declare const CROSS_PRODUCT_ESCALATION_GUIDANCE: string;
|
|
13
48
|
export declare function registerAgentTools(server: McpServer, getCreds: GetCreds): void;
|
|
@@ -30,13 +30,61 @@ export function directedHoldFilingRefusal(disposition) {
|
|
|
30
30
|
}
|
|
31
31
|
return null;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* An agent_resolvable filing is MACHINE-OWNED: hidden from the operator inbox
|
|
35
|
+
* and consumed either by the focus's next coding spawn (which reaches it by
|
|
36
|
+
* focusId) or, past a bound, by the org-wide promotion sweep. A filing that
|
|
37
|
+
* carries NO focus anchor -- exactly what an INTERACTIVE session produces,
|
|
38
|
+
* holding neither a focus nor an agent session -- has no active machine consumer:
|
|
39
|
+
* it sits invisible until the org-wide promotion bound elapses. That is a
|
|
40
|
+
* write-only sink at file time, so refuse it AT SOURCE and name the disposition
|
|
41
|
+
* that reaches a reader immediately (needs_operator, which the operator inbox
|
|
42
|
+
* shows). Disposition is immutable after filing (escalation_update accepts only
|
|
43
|
+
* status/resolutionNotes/answer), so the check must land here, not as a later
|
|
44
|
+
* correction path.
|
|
45
|
+
*
|
|
46
|
+
* Returns the refusal message when the filing is agent_resolvable AND carries no
|
|
47
|
+
* focus anchor; null when it is reachable (a focus-anchored team-session filing)
|
|
48
|
+
* or is not agent_resolvable. Pure so the refusal is unit-tested without the
|
|
49
|
+
* network. Complements the daemon-side org-wide promotion sweep: this stops NEW
|
|
50
|
+
* sinks, the sweep drains filings that predate the check or arrive from an older
|
|
51
|
+
* client.
|
|
52
|
+
*/
|
|
53
|
+
export function unreachableAgentResolvableRefusal(disposition, anchors) {
|
|
54
|
+
if (disposition !== ESCALATION_DISPOSITIONS.AGENT_RESOLVABLE)
|
|
55
|
+
return null;
|
|
56
|
+
if (anchors.focusId)
|
|
57
|
+
return null;
|
|
58
|
+
return ("This filing is agent_resolvable but carries no focus anchor, so no machine can reach it. " +
|
|
59
|
+
"agent_resolvable is MACHINE-OWNED: it is hidden from the operator inbox and consumed by a " +
|
|
60
|
+
"focus's coding spawn, which reaches it by focusId. An interactive session holds neither a " +
|
|
61
|
+
"focus nor an agent session, so this filing would sit invisible until the org-wide promotion " +
|
|
62
|
+
"bound elapses -- a write-only sink at file time. File it as needs_operator instead: the " +
|
|
63
|
+
"operator inbox shows a needs_operator escalation immediately. (If you ARE working within a " +
|
|
64
|
+
"focus a machine will spawn against, pass its focusId so the machine lane can reach the filing.)");
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A cross-product blocker (this product blocked by ANOTHER product) has a
|
|
68
|
+
* first-class AGENT-facing path: telora_product_request (nexus domain). The
|
|
69
|
+
* escalation -> Nexus bridge in the daemon (maybeRouteToNexus, escalation-bridge.ts)
|
|
70
|
+
* is DAEMON-INTERNAL: it fires only inside the daemon's own fileEscalation
|
|
71
|
+
* (PRD / system-filed escalations), never from this agent escalate surface, which
|
|
72
|
+
* posts directly to the edge escalation_create and does not touch the bridge. So
|
|
73
|
+
* an agent that needs to move work to another product files a telora_product_request,
|
|
74
|
+
* not an escalation. Exported so the guidance is a single pinned string a test can
|
|
75
|
+
* assert names the reachable path.
|
|
76
|
+
*/
|
|
77
|
+
export const CROSS_PRODUCT_ESCALATION_GUIDANCE = "Cross-product blocker (blocked by ANOTHER product)? Use telora_product_request (nexus domain), " +
|
|
78
|
+
"NOT an escalation -- the escalation->Nexus bridge is daemon-internal and is not reachable from " +
|
|
79
|
+
"this agent escalate surface.";
|
|
33
80
|
export function registerAgentTools(server, getCreds) {
|
|
34
81
|
server.tool("telora_agent", "AI agent orchestration: manage agent roles and human-AI escalation requests. " +
|
|
35
82
|
"Agent roles define capabilities assigned to focuses. Escalations are requests from AI agents to humans when blocked. " +
|
|
36
83
|
"Actions: role_list (list available AI agent roles), escalate (create escalation to human), " +
|
|
37
84
|
"escalation_list (view pending escalations), escalation_get (details, including recipientLiveness -- " +
|
|
38
85
|
"'no_anchor' | 'anchored_exited' | 'anchored_live_blocked' -- so you can tell a blocked-and-waiting team " +
|
|
39
|
-
"apart from one that has already exited), escalation_update (resolve, dismiss, or answer a directed question)." +
|
|
86
|
+
"apart from one that has already exited), escalation_update (resolve, dismiss, or answer a directed question). " +
|
|
87
|
+
CROSS_PRODUCT_ESCALATION_GUIDANCE +
|
|
40
88
|
LIST_INDEX_NOTE, {
|
|
41
89
|
action: z.enum(["role_list", "escalate", "escalation_list", "escalation_get", "escalation_update"]).describe("Action to perform"),
|
|
42
90
|
escalationId: z.string().uuid().optional().describe("Escalation UUID (required for escalation_get, escalation_update)"),
|
|
@@ -61,7 +109,15 @@ export function registerAgentTools(server, getCreds) {
|
|
|
61
109
|
"REFUSED: needs_intent and needs_clarification are directed holds that ask a human to steer " +
|
|
62
110
|
"mid-flight -- an armed focus reaches terminal without human input, so these are no longer " +
|
|
63
111
|
"fileable. At a fork you believe the human owns, DECIDE the reversible option that preserves " +
|
|
64
|
-
"both futures and record it for the focus review instead of filing."
|
|
112
|
+
"both futures and record it for the focus review instead of filing. " +
|
|
113
|
+
"DO NOT file for a CROSS-PRODUCT DEPENDENCY: a delivery waiting at verify on an outgoing " +
|
|
114
|
+
"cross-product request names NO human-only act -- it clears when the peer product's request " +
|
|
115
|
+
"closes, a reality change, not a human resolving an inbox row. That is DECLARED STATE, not an " +
|
|
116
|
+
"escalation: create the outgoing request (telora_product_request) and the daemon declares a " +
|
|
117
|
+
"durable external hold on the delivery (gate_state.externalHold) that holds it out of done and " +
|
|
118
|
+
"clears itself by re-reading the request's closure. An escalation standing in for that hold is " +
|
|
119
|
+
"a row a routine triage pass could wrongly action, advancing the delivery with its dependency " +
|
|
120
|
+
"still unmet -- so it must not be filed."),
|
|
65
121
|
status: z.enum(["pending", "in_review", "resolved", "dismissed"]).optional().describe("Escalation status (escalation_list: filter; escalation_update: new status)"),
|
|
66
122
|
resolutionNotes: z.string().max(5000).optional().describe("Resolution notes (escalation_update only)"),
|
|
67
123
|
answer: z.string().max(5000).optional().describe("Structured, agent-addressed answer to a DIRECTED escalation (disposition needs_intent / " +
|
|
@@ -94,6 +150,11 @@ export function registerAgentTools(server, getCreds) {
|
|
|
94
150
|
const directedRefusal = directedHoldFilingRefusal(params.disposition);
|
|
95
151
|
if (directedRefusal)
|
|
96
152
|
return validationError(directedRefusal);
|
|
153
|
+
// Refuse an agent_resolvable filing with no focus anchor: a machine
|
|
154
|
+
// cannot reach it, so accepting it would create a write-only sink.
|
|
155
|
+
const unreachableRefusal = unreachableAgentResolvableRefusal(params.disposition, { focusId: params.focusId });
|
|
156
|
+
if (unreachableRefusal)
|
|
157
|
+
return validationError(unreachableRefusal);
|
|
97
158
|
const fields = buildFields(params, [
|
|
98
159
|
'reasonType', 'description', 'issueId', 'whatWasTried', 'helpNeeded',
|
|
99
160
|
'productId', 'focusId', 'deliveryId', 'disposition',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentHandlers.js","sourceRoot":"","sources":["../../src/handlers/agentHandlers.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mDAAmD;AACnD,+FAA+F;AAC/F,8EAA8E;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,WAAW,EACX,eAAe,GAEhB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,WAA+B;IACvE,IACE,WAAW,KAAK,uBAAuB,CAAC,YAAY;QACpD,WAAW,KAAK,uBAAuB,CAAC,mBAAmB,EAC3D,CAAC;QACD,OAAO,CACL,wDAAwD,WAAW,kBAAkB;YACrF,yFAAyF;YACzF,0FAA0F;YAC1F,0FAA0F;YAC1F,2FAA2F;YAC3F,6FAA6F;YAC7F,8FAA8F;YAC9F,qFAAqF;YACrF,+FAA+F;YAC/F,oGAAoG,CACrG,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,QAAkB;IACtE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,+EAA+E;QAC/E,uHAAuH;QACvH,6FAA6F;QAC7F,sGAAsG;QACtG,0GAA0G;QAC1G
|
|
1
|
+
{"version":3,"file":"agentHandlers.js","sourceRoot":"","sources":["../../src/handlers/agentHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,9 @@
|
|
|
18
18
|
//
|
|
19
19
|
// SOURCE OF TRUTH for the posture-neutral discipline (the AUDIT_GUIDE_SHARED
|
|
20
20
|
// const below) is mirrored verbatim into the daemon's audit assessor prompt
|
|
21
|
-
// (packages/daemon/src/audit-
|
|
21
|
+
// (packages/daemon/src/audit-prompt.ts, the AUDIT_GUIDE_SHARED constant -- the
|
|
22
|
+
// prose was split out of audit-phase.ts and is re-exported from it, so edit
|
|
23
|
+
// audit-prompt.ts; that is also the file the sync test reads). The
|
|
22
24
|
// daemon cannot runtime-import this MCP package (no cross-package runtime
|
|
23
25
|
// import), so the prose is duplicated there. The required-sync invariant is
|
|
24
26
|
// held MECHANICALLY, not by this comment: the daemon test audit-guide-sync.test.ts
|
|
@@ -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,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,
|
|
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,+EAA+E;AAC/E,4EAA4E;AAC5E,mEAAmE;AACnE,0EAA0E;AAC1E,4EAA4E;AAC5E,mFAAmF;AACnF,2EAA2E;AAC3E,6EAA6E;AAC7E,uEAAuE;AACvE,8EAA8E;AAE9E,2BAA2B;AAC3B,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EAsGoD,CAAC;AAChF,yBAAyB;AAEzB,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCxC,kBAAkB,EAAE,CAAC"}
|