agentfootprint 9.83.0 → 9.85.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.
Files changed (137) hide show
  1. package/CHANGELOG.md +713 -512
  2. package/dist/artifacts/present.js +21 -3
  3. package/dist/artifacts/present.js.map +1 -1
  4. package/dist/artifacts/wants.js +19 -4
  5. package/dist/artifacts/wants.js.map +1 -1
  6. package/dist/core/Agent.js +10 -0
  7. package/dist/core/Agent.js.map +1 -1
  8. package/dist/core/agent/AgentBuilder.js.map +1 -1
  9. package/dist/core/agent/buildToolRegistry.js +137 -0
  10. package/dist/core/agent/buildToolRegistry.js.map +1 -1
  11. package/dist/core/agent/evidence/frames.js +15 -6
  12. package/dist/core/agent/evidence/frames.js.map +1 -1
  13. package/dist/core/agent/outputEnforcement.js +7 -4
  14. package/dist/core/agent/outputEnforcement.js.map +1 -1
  15. package/dist/core/agent/selfCallNotice.js +174 -0
  16. package/dist/core/agent/selfCallNotice.js.map +1 -0
  17. package/dist/core/agent/stages/routeTurn.js +28 -3
  18. package/dist/core/agent/stages/routeTurn.js.map +1 -1
  19. package/dist/core/agent/stages/toolCalls.js +87 -2
  20. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  21. package/dist/core/agent/window/currentRequest.js +11 -13
  22. package/dist/core/agent/window/currentRequest.js.map +1 -1
  23. package/dist/core/agent/window/notice.js +9 -9
  24. package/dist/core/agent/window/notice.js.map +1 -1
  25. package/dist/core/agent/window/summarize.js +9 -9
  26. package/dist/core/agent/window/summarize.js.map +1 -1
  27. package/dist/core/codeRunnerTool.js +25 -6
  28. package/dist/core/codeRunnerTool.js.map +1 -1
  29. package/dist/doors/skill-graph.js +2 -1
  30. package/dist/doors/skill-graph.js.map +1 -1
  31. package/dist/esm/artifacts/present.js +21 -3
  32. package/dist/esm/artifacts/present.js.map +1 -1
  33. package/dist/esm/artifacts/wants.js +19 -4
  34. package/dist/esm/artifacts/wants.js.map +1 -1
  35. package/dist/esm/core/Agent.js +10 -0
  36. package/dist/esm/core/Agent.js.map +1 -1
  37. package/dist/esm/core/agent/AgentBuilder.d.ts +15 -0
  38. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  39. package/dist/esm/core/agent/buildToolRegistry.d.ts +137 -0
  40. package/dist/esm/core/agent/buildToolRegistry.js +137 -0
  41. package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
  42. package/dist/esm/core/agent/evidence/frames.d.ts +9 -4
  43. package/dist/esm/core/agent/evidence/frames.js +13 -5
  44. package/dist/esm/core/agent/evidence/frames.js.map +1 -1
  45. package/dist/esm/core/agent/outputEnforcement.d.ts +1 -2
  46. package/dist/esm/core/agent/outputEnforcement.js +4 -2
  47. package/dist/esm/core/agent/outputEnforcement.js.map +1 -1
  48. package/dist/esm/core/agent/selfCallNotice.d.ts +140 -0
  49. package/dist/esm/core/agent/selfCallNotice.js +169 -0
  50. package/dist/esm/core/agent/selfCallNotice.js.map +1 -0
  51. package/dist/esm/core/agent/stages/routeTurn.js +28 -3
  52. package/dist/esm/core/agent/stages/routeTurn.js.map +1 -1
  53. package/dist/esm/core/agent/stages/toolCalls.d.ts +6 -0
  54. package/dist/esm/core/agent/stages/toolCalls.js +87 -2
  55. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  56. package/dist/esm/core/agent/window/currentRequest.d.ts +9 -3
  57. package/dist/esm/core/agent/window/currentRequest.js +11 -13
  58. package/dist/esm/core/agent/window/currentRequest.js.map +1 -1
  59. package/dist/esm/core/agent/window/notice.d.ts +1 -4
  60. package/dist/esm/core/agent/window/notice.js +5 -6
  61. package/dist/esm/core/agent/window/notice.js.map +1 -1
  62. package/dist/esm/core/agent/window/summarize.d.ts +1 -4
  63. package/dist/esm/core/agent/window/summarize.js +5 -6
  64. package/dist/esm/core/agent/window/summarize.js.map +1 -1
  65. package/dist/esm/core/codeRunnerTool.js +25 -6
  66. package/dist/esm/core/codeRunnerTool.js.map +1 -1
  67. package/dist/esm/doors/skill-graph.d.ts +1 -1
  68. package/dist/esm/doors/skill-graph.js +1 -1
  69. package/dist/esm/doors/skill-graph.js.map +1 -1
  70. package/dist/esm/events/payloads.d.ts +15 -0
  71. package/dist/esm/index.d.ts +1 -0
  72. package/dist/esm/index.js +8 -0
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/lib/injection-engine/index.d.ts +1 -0
  75. package/dist/esm/lib/injection-engine/index.js +6 -0
  76. package/dist/esm/lib/injection-engine/index.js.map +1 -1
  77. package/dist/esm/lib/injection-engine/skillToolDescriptors.d.ts +29 -0
  78. package/dist/esm/lib/injection-engine/skillToolDescriptors.js +138 -8
  79. package/dist/esm/lib/injection-engine/skillToolDescriptors.js.map +1 -1
  80. package/dist/esm/lib/injection-engine/types.d.ts +54 -0
  81. package/dist/esm/lib/injection-engine/types.js +28 -0
  82. package/dist/esm/lib/injection-engine/types.js.map +1 -1
  83. package/dist/esm/lib/saidByPerson.d.ts +99 -0
  84. package/dist/esm/lib/saidByPerson.js +104 -0
  85. package/dist/esm/lib/saidByPerson.js.map +1 -0
  86. package/dist/esm/maps/engagement/parkCard.js +7 -1
  87. package/dist/esm/maps/engagement/parkCard.js.map +1 -1
  88. package/dist/index.js +14 -3
  89. package/dist/index.js.map +1 -1
  90. package/dist/lib/injection-engine/index.js +9 -2
  91. package/dist/lib/injection-engine/index.js.map +1 -1
  92. package/dist/lib/injection-engine/skillToolDescriptors.js +140 -9
  93. package/dist/lib/injection-engine/skillToolDescriptors.js.map +1 -1
  94. package/dist/lib/injection-engine/types.js +30 -1
  95. package/dist/lib/injection-engine/types.js.map +1 -1
  96. package/dist/lib/saidByPerson.js +111 -0
  97. package/dist/lib/saidByPerson.js.map +1 -0
  98. package/dist/maps/engagement/parkCard.js +7 -1
  99. package/dist/maps/engagement/parkCard.js.map +1 -1
  100. package/dist/types/artifacts/present.d.ts.map +1 -1
  101. package/dist/types/artifacts/wants.d.ts.map +1 -1
  102. package/dist/types/core/Agent.d.ts.map +1 -1
  103. package/dist/types/core/agent/AgentBuilder.d.ts +15 -0
  104. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  105. package/dist/types/core/agent/buildToolRegistry.d.ts +137 -0
  106. package/dist/types/core/agent/buildToolRegistry.d.ts.map +1 -1
  107. package/dist/types/core/agent/evidence/frames.d.ts +9 -4
  108. package/dist/types/core/agent/evidence/frames.d.ts.map +1 -1
  109. package/dist/types/core/agent/outputEnforcement.d.ts +1 -2
  110. package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -1
  111. package/dist/types/core/agent/selfCallNotice.d.ts +141 -0
  112. package/dist/types/core/agent/selfCallNotice.d.ts.map +1 -0
  113. package/dist/types/core/agent/stages/routeTurn.d.ts.map +1 -1
  114. package/dist/types/core/agent/stages/toolCalls.d.ts +6 -0
  115. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  116. package/dist/types/core/agent/window/currentRequest.d.ts +9 -3
  117. package/dist/types/core/agent/window/currentRequest.d.ts.map +1 -1
  118. package/dist/types/core/agent/window/notice.d.ts +1 -4
  119. package/dist/types/core/agent/window/notice.d.ts.map +1 -1
  120. package/dist/types/core/agent/window/summarize.d.ts +1 -4
  121. package/dist/types/core/agent/window/summarize.d.ts.map +1 -1
  122. package/dist/types/doors/skill-graph.d.ts +1 -1
  123. package/dist/types/doors/skill-graph.d.ts.map +1 -1
  124. package/dist/types/events/payloads.d.ts +15 -0
  125. package/dist/types/events/payloads.d.ts.map +1 -1
  126. package/dist/types/index.d.ts +1 -0
  127. package/dist/types/index.d.ts.map +1 -1
  128. package/dist/types/lib/injection-engine/index.d.ts +1 -0
  129. package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
  130. package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts +29 -0
  131. package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts.map +1 -1
  132. package/dist/types/lib/injection-engine/types.d.ts +54 -0
  133. package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
  134. package/dist/types/lib/saidByPerson.d.ts +100 -0
  135. package/dist/types/lib/saidByPerson.d.ts.map +1 -0
  136. package/dist/types/maps/engagement/parkCard.d.ts.map +1 -1
  137. package/package.json +1 -1
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ /**
3
+ * The answer a `read_skill` SELF-CALL gets back (9.84.0).
4
+ *
5
+ * A self-call is `read_skill("X")` from a cursor already standing on X. It used
6
+ * to fall through the skill-graph gate's reachability arm — `makeReachableSkills`
7
+ * filters the cursor out of its own successor set (a MOVE to where you already
8
+ * are is not a move) and `openSkillIds()` excludes every graph-wired skill, so
9
+ * the cursor's own id is in neither half of `hops ∪ open`. The model was told:
10
+ *
11
+ * read_skill("X") is not reachable from here. Reachable skills: …
12
+ *
13
+ * while X's body was in its system prompt and X's tools were in that very call's
14
+ * tool list. Read as a statement about AVAILABILITY — which is how a model reads
15
+ * "not reachable" — that is a flat contradiction of the request it arrived in,
16
+ * and the observed behaviour was to stop and answer that it could not help.
17
+ *
18
+ * ── THE LAW THIS FILE IS WRITTEN AGAINST ──────────────────────────────────
19
+ *
20
+ * A TOOL RESULT IS NOT READ ONCE. It is composed during iteration N, written
21
+ * into `history`, and then read by the model on call N+1 AND ON EVERY CALL
22
+ * AFTER IT for the rest of the turn — including the out-of-budget WRAP-UP,
23
+ * which `callLLM` serves with an EMPTY tool list under a user message saying
24
+ * "Do not request tools".
25
+ *
26
+ * The consequence is the whole design: NO COMPOSE-TIME CHECK CAN MAKE A
27
+ * FORWARD-LOOKING SENTENCE SAFE. A budget test, a posture test, a cursor test
28
+ * — each is true at the instant it runs and each is outlived by the sentence
29
+ * it admitted. Three rounds of this file fixed one clause at a time and each
30
+ * time a different clause was still false, because every one of them was a
31
+ * PREDICTION and the fix was always a better prediction.
32
+ *
33
+ * So the notice makes no predictions at all. Every clause is a fact about ONE
34
+ * already-finished event — the call the model made `read_skill` on — and every
35
+ * clause is anchored to that call by name ("that call"), never by deixis ("the
36
+ * call you just made", which denotes a different call each time it is re-read).
37
+ * A past fact about a named call cannot be falsified by anything that happens
38
+ * afterwards: not by the budget running out, not by a posture refusing a hop,
39
+ * not by a sibling tool in the same batch moving the cursor.
40
+ *
41
+ * ── WHAT WAS DELETED, AND WHY THE NOTICE STILL DOES ITS JOB ───────────────
42
+ *
43
+ * Gone: the exhortation ("Go ahead and act on the request"), the move offer
44
+ * ("read_skill MOVES you somewhere else — from here that would be: beta"), the
45
+ * open-skill offer ("These activate without moving you: gamma"), and the
46
+ * budget clause that was added to gate them. Each was false somewhere:
47
+ *
48
+ * • the exhortation, on the wrap-up call, beside "Do not request tools";
49
+ * • the move offer, on the wrap-up call (a hop is a tool call), under
50
+ * `strictness: 'rails'` (every model hop refused) and under `'guard'` on a
51
+ * decisively-routed turn (every hop not on an outstanding menu refused) —
52
+ * where the sibling posture arm answers a taken-up offer with "read_skill
53
+ * here reaches only the open skills: gamma", contradicting the notice from
54
+ * the arm immediately above it, and spending escalation budget to do so;
55
+ * • the budget clause, because a budget read at compose time is a claim
56
+ * about a call that has not happened.
57
+ *
58
+ * The notice's JOB is to stop a model concluding its capability is gone. It
59
+ * does that by stating what it held, not by promising what it may do: you were
60
+ * standing in this skill, its instructions were in that call's prompt, its
61
+ * tools were on that call's wire, and asking took nothing away. A model that
62
+ * reads those four facts has no ground left for "I cannot help".
63
+ *
64
+ * The forward-looking half had a rightful owner all along, and it is not a
65
+ * tool result: the `read_skill` DESCRIPTION is recomposed on every single call,
66
+ * so it can safely speak in the present ("You are in 'beta'."), it is filtered
67
+ * for per-role visibility at source, and it is absent from the wrap-up because
68
+ * the whole tool list is. One owner for the present tense, one for the past,
69
+ * and they can no longer disagree — which is the only property that survived
70
+ * every round of this bug.
71
+ */
72
+ Object.defineProperty(exports, "__esModule", { value: true });
73
+ exports.selfCallNotice = exports.selfSkillTools = void 0;
74
+ /**
75
+ * The skill's tools, as of the call the model just made — or `undefined` when
76
+ * that cannot be established, which is not the same answer and must not be
77
+ * reported as one.
78
+ *
79
+ * `undefined` means the notice says nothing about tools at all. It happens when
80
+ * the tools slot composed no per-iteration list (`reactMode: 'classic'` caches
81
+ * the slot, and `callLLM` falls back to its build-time schemas), or when the
82
+ * cursor's skill is not in the active set. Silence is the only honest output
83
+ * there: the alternative is a sentence naming tools the model may not have.
84
+ *
85
+ * The out-of-budget wrap-up is NOT one of these cases and must not be modelled
86
+ * as one. Its empty tool list belongs to a LATER call; the wire read here is
87
+ * always the one the model was really handed on the call being answered, and
88
+ * the notice speaks of that call and only that call.
89
+ */
90
+ function selfSkillTools(skillId, activeInjections, wire) {
91
+ if (wire === undefined || activeInjections === undefined)
92
+ return undefined;
93
+ const mine = activeInjections.find((i) => i.id === skillId);
94
+ if (mine === undefined)
95
+ return undefined;
96
+ const declared = (mine.inject.tools ?? []).map((t) => t.schema.name);
97
+ const onWire = new Set(wire.map((s) => s.name));
98
+ return { declared, served: declared.filter((n) => onWire.has(n)) };
99
+ }
100
+ exports.selfSkillTools = selfSkillTools;
101
+ /**
102
+ * The self-call's tool result.
103
+ *
104
+ * NOT a refusal to the MODEL, and deliberately so. The gate's other two arms
105
+ * refuse because the model asked for something it may not have; a self-call
106
+ * asks for a body it already holds, and the useful reply is the fact — where
107
+ * you stood, and what rode that call — not a decline. It is still counted as a
108
+ * refusal by the ESCALATION BUDGET (`noteSkillRefusal`, beside the emit), and
109
+ * those two facts do not fight: the budget is not measuring how the sentence
110
+ * reads, it is measuring a model that keeps asking the graph where it is
111
+ * instead of working, which is exactly the stuck run the budget escalates.
112
+ *
113
+ * It still OVERWRITES the tool's own result the way every other arm does,
114
+ * because that overwrite is what puts the authoritative sentence in front of
115
+ * the governance rules, the refusal cap and the after-tool moment, on both
116
+ * channels, before the model reads anything.
117
+ *
118
+ * The one thing not overwritten is a BODY. The live case is `surfaceMode:
119
+ * 'both'` — `'tool-only'` cannot arise here, because `skillBodyDelivery`
120
+ * refuses it at BUILD time for anything but an `llm-activated` skill and only a
121
+ * graph-wired skill can be the cursor. Under `'both'` the body is in the system
122
+ * prompt AND rides the tool result, and the second copy is the whole point of
123
+ * the mode: recency-first delivery, the body at the end of the window rather
124
+ * than only at the top of the prompt. Dropping it here would quietly demote
125
+ * `'both'` to `'system-prompt'` on the one call that asked to re-read.
126
+ *
127
+ * TENSE IS LOAD-BEARING, AND SO IS DEIXIS. Every clause below is past tense
128
+ * about a single named call, and every reference to that call is "that call" —
129
+ * bound by the opening clause, which says which call it was. "The call you just
130
+ * made" was the earlier wording and it is not safe: re-read four calls later it
131
+ * denotes call four, and the tools it names rode call one.
132
+ *
133
+ * There are exactly two present-tense phrases in the output and both are
134
+ * timeless rather than temporal: "It declares no tools of its own" (a
135
+ * declaration is fixed when the skill is defined and cannot vary within a run)
136
+ * and "Its instructions are repeated below" (the body is appended to this very
137
+ * string, so the sentence is true wherever the string is read).
138
+ */
139
+ function selfCallNotice(args) {
140
+ const { skillId, tools, body } = args;
141
+ // "were in that call's system prompt" is a claim about the prompt, and the
142
+ // evidence for it is that the skill was in the ACTIVE set for that call —
143
+ // which is exactly what `tools !== undefined` establishes (see
144
+ // `selfSkillTools`). With no body to append and no proof it was mounted, the
145
+ // notice says nothing about the instructions rather than asserting where
146
+ // they were.
147
+ const bodyClause = body !== undefined
148
+ ? `Its instructions are repeated below. `
149
+ : tools !== undefined
150
+ ? `Its instructions were in that call's system prompt. `
151
+ : '';
152
+ const toolClause = tools === undefined
153
+ ? ''
154
+ : tools.declared.length === 0
155
+ ? `It declares no tools of its own. `
156
+ : tools.served.length > 0
157
+ ? `Its own tools were on that call's tool list: ${tools.served.join(', ')}.`
158
+ : `None of its own tools were on that call's tool list (${tools.declared.join(', ')} ` +
159
+ `${tools.declared.length === 1 ? 'was' : 'were'} withheld).`;
160
+ // The opening clause is what binds "that call" for every clause after it, so
161
+ // it names the event rather than the state: not where the cursor IS, but
162
+ // where it stood when this call was made. A sibling tool in the SAME batch
163
+ // can fire a step edge and move the cursor before the model reads this — the
164
+ // read_skill description in that request will then say "You are in 'beta'",
165
+ // and the two must not contradict each other. Only one of them is entitled
166
+ // to the present tense, and it is the one recomposed on every call.
167
+ const notice = `read_skill("${skillId}") named the skill you were already standing in when you ` +
168
+ `made that call, so the cursor did not move — nothing was activated, and nothing ` +
169
+ `was taken away. ${bodyClause}${toolClause}`;
170
+ const trimmed = notice.trimEnd();
171
+ return body === undefined ? trimmed : `${trimmed}\n\n${body}`;
172
+ }
173
+ exports.selfCallNotice = selfCallNotice;
174
+ //# sourceMappingURL=selfCallNotice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selfCallNotice.js","sourceRoot":"","sources":["../../../src/core/agent/selfCallNotice.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;;;AAaH;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,cAAc,CAC5B,OAAe,EACf,gBAAwD,EACxD,IAA0C;IAE1C,IAAI,IAAI,KAAK,SAAS,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3E,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC5D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC;AAXD,wCAWC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,SAAgB,cAAc,CAAC,IAK9B;IACC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtC,2EAA2E;IAC3E,0EAA0E;IAC1E,+DAA+D;IAC/D,6EAA6E;IAC7E,yEAAyE;IACzE,aAAa;IACb,MAAM,UAAU,GACd,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,uCAAuC;QACzC,CAAC,CAAC,KAAK,KAAK,SAAS;YACrB,CAAC,CAAC,sDAAsD;YACxD,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,UAAU,GACd,KAAK,KAAK,SAAS;QACjB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC7B,CAAC,CAAC,mCAAmC;YACrC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBACzB,CAAC,CAAC,gDAAgD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC5E,CAAC,CAAC,wDAAwD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACpF,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC;IACnE,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,2EAA2E;IAC3E,oEAAoE;IACpE,MAAM,MAAM,GACV,eAAe,OAAO,2DAA2D;QACjF,kFAAkF;QAClF,mBAAmB,UAAU,GAAG,UAAU,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,IAAI,EAAE,CAAC;AAChE,CAAC;AAzCD,wCAyCC"}
@@ -63,9 +63,34 @@ function makeRouteTurnStage(deps) {
63
63
  return async (scope) => {
64
64
  const env = scope.$getEnv();
65
65
  let inherited = scope.currentSkillId;
66
- // Deploy honesty: an inherited id that is not a node of the CURRENTLY
67
- // mounted graph is dropped (cold start), never silently parked on a node
68
- // that does not exist.
66
+ // ── THE CURSOR LAW ────────────────────────────────────────────────
67
+ //
68
+ // Position belongs to the HOST and the TRACE, never to the transcript.
69
+ //
70
+ // The clause below is its hardest one, and it shipped implemented and
71
+ // unnamed. Deploy honesty: an inherited id that is not a node of the
72
+ // CURRENTLY mounted graph is dropped (cold start), never silently parked
73
+ // on a node that does not exist.
74
+ //
75
+ // Read the three owners in the order they appear here. The HOST supplies
76
+ // the candidate — `scope.currentSkillId`, restored from a checkpoint the
77
+ // caller stored. The host also OWNS the graph, so the host is the only
78
+ // party who can say whether that id still names a node, which is what
79
+ // `deps.isNode` asks. The TRACE keeps the answer: whatever survives lands
80
+ // on `turn_routed`, and what did not survive lands there too, as
81
+ // `droppedResume`, because a position that was silently discarded is a
82
+ // position nobody can audit.
83
+ //
84
+ // The TRANSCRIPT is the party with no vote, and it is the one that looks
85
+ // most authoritative. After a deploy that retired a skill, the restored
86
+ // conversation is still full of it: a `read_skill` result announcing its
87
+ // activation, its body in an earlier system prompt, its tools' results.
88
+ // None of that is evidence of where the cursor is — it is evidence of
89
+ // where the cursor WAS, in a graph that is no longer mounted. Reading
90
+ // position back out of it would let a deleted skill keep routing a live
91
+ // conversation. So the id is judged against the mounted graph and nothing
92
+ // else, and a turn that cannot place its inherited cursor starts cold and
93
+ // says so, rather than parking on a node no resolver can move off.
69
94
  let droppedResume;
70
95
  if (inherited !== undefined && !deps.isNode(inherited)) {
71
96
  droppedResume = { id: inherited, reason: 'unknown-skill' };
@@ -1 +1 @@
1
- {"version":3,"file":"routeTurn.js","sourceRoot":"","sources":["../../../../src/core/agent/stages/routeTurn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routeTurn.js","sourceRoot":"","sources":["../../../../src/core/agent/stages/routeTurn.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,8 @@ const typedEmit_js_1 = require("../../../recorders/core/typedEmit.js");
52
52
  const extractSequence_js_1 = require("../../../security/extractSequence.js");
53
53
  const skillTarget_js_1 = require("../../../security/skillTarget.js");
54
54
  const routingPolicy_js_1 = require("../../../lib/injection-engine/routingPolicy.js");
55
+ const skillToolDescriptors_js_1 = require("../../../lib/injection-engine/skillToolDescriptors.js");
56
+ const selfCallNotice_js_1 = require("../selfCallNotice.js");
55
57
  const types_js_2 = require("../../../maps/engagement/types.js");
56
58
  const types_js_3 = require("../../../identity/types.js");
57
59
  const capability_js_1 = require("../../../artifacts/capability.js");
@@ -704,8 +706,14 @@ function buildToolCallsHandler(deps) {
704
706
  return plan ? (0, skillSteps_js_1.readSkillStepIntro)(plan) : '';
705
707
  };
706
708
  // ── Escalate-on-evidence (9.19.0) — the refusal budget ─────────────────
707
- // Called beside BOTH `skill.rejected` emit sites (reachability + posture):
708
- // real recorded refusals are the only evidence that counts. At the
709
+ // Called beside ALL THREE `skill.rejected` emit sites — self-call,
710
+ // reachability and posture: real recorded refusals are the only evidence that
711
+ // counts. The self-call site is deliberate and worth stating, because the
712
+ // sentence it composes is NOT a refusal to the model (see `selfCallNotice`):
713
+ // what the budget measures is not how a message reads, it is a model that
714
+ // keeps asking the graph where it is instead of working — the stuck run this
715
+ // budget exists to escalate. Both facts hold at once, and neither comment
716
+ // gets to imply the other away. At the
709
717
  // declared threshold the flip is committed (`skillEscalated` — the fact
710
718
  // callLLM's brainFor reads) and `skill.escalated` fires ONCE; the counter
711
719
  // keeps counting so the record shows the whole loop. Gated on the policy
@@ -2513,6 +2521,81 @@ function buildToolCallsHandler(deps) {
2513
2521
  // Admitted. Nothing to refuse and no posture to apply: this is
2514
2522
  // not a hop, and a posture governs routing, not engagement.
2515
2523
  }
2524
+ else if (currentSkillId !== undefined && reqId === currentSkillId) {
2525
+ // ── The SELF-CALL arm (9.84.0) — BEFORE reachability ─────────
2526
+ // The cursor is in neither half of `allowed`, by construction:
2527
+ // `makeReachableSkills` filters it out of its own successor set
2528
+ // and `openSkillIds()` excludes every graph-wired skill. So a
2529
+ // pick of the skill the model is ALREADY IN fell through to the
2530
+ // reachability arm and came back "not reachable from here" —
2531
+ // about the one skill whose body was in the prompt and whose
2532
+ // tools were in that same call's tool list. Models read that as
2533
+ // "unavailable" and stop, which is exactly what happened in the
2534
+ // field, three times in one day.
2535
+ //
2536
+ // It stays a REJECTION mechanically — no activation to append
2537
+ // (the cursor already activates it), no hop (`skillHop` is false
2538
+ // for the cursor anyway), and the refusal cap still counts it,
2539
+ // because a self-call LOOP is precisely the stuck model that
2540
+ // budget exists to escalate. What changes is the sentence: an
2541
+ // acknowledgement of where the model stands, and — named from
2542
+ // this call's own wire list, never from the declaration — what
2543
+ // it can call right now. `reason` on the event is what lets a
2544
+ // consumer tell the two apart without comparing ids.
2545
+ //
2546
+ // Ordered after re-engagement on purpose: a parked map member
2547
+ // picked at its own cursor is a genuine re-engagement request,
2548
+ // and re-engaging it beats telling the model about tools that
2549
+ // the park has just taken off the wire.
2550
+ skillRejected = true;
2551
+ // The wire the model was ACTUALLY handed on THIS call — the one
2552
+ // the notice speaks about and the only one it may speak about.
2553
+ // Read unconditionally: a `scope.wrapUpAsked` guard here could
2554
+ // never fire. This stage runs only on the Route decider's
2555
+ // `'tool-calls'` branch, which it takes only while
2556
+ // `iteration < maxIterations`; `wrapUpStage` raises the latch one
2557
+ // iteration PAST that, so every self-call is composed with the
2558
+ // latch still down.
2559
+ const wire = scope.dynamicToolSchemas;
2560
+ // No routing map is passed, and that is the fix rather than an
2561
+ // omission. A tool result is re-read on every later call of the
2562
+ // turn, so any id named here as somewhere `read_skill` could go
2563
+ // is a PREDICTION — and three separate mechanisms falsify it
2564
+ // after this line has run: the budget (a hop is a tool call, and
2565
+ // the wrap-up dispatches none), the POSTURE arm forty lines below
2566
+ // (`rails` refuses every model hop; `guard` refuses every hop off
2567
+ // an outstanding menu, which is the default state of a decisively
2568
+ // routed turn), and the cursor itself (a sibling tool in this
2569
+ // very batch can fire a step edge). Passing `hops` through the
2570
+ // hidden-id filter fixed only the third-party leak and left all
2571
+ // three staleness paths open; the notice contradicting the
2572
+ // posture arm's own refusal — and costing a refusal from the
2573
+ // escalation budget to find out — was the live bug. The routing
2574
+ // map belongs to the `read_skill` DESCRIPTION, which is
2575
+ // recomposed on every call and is therefore never stale.
2576
+ result = (0, selfCallNotice_js_1.selfCallNotice)({
2577
+ skillId: reqId,
2578
+ tools: (0, selfCallNotice_js_1.selfSkillTools)(reqId, scope.activeInjections, wire),
2579
+ // A body only exists under `surfaceMode: 'both'` (`'tool-only'`
2580
+ // is refused at build for anything a graph routes, and only a
2581
+ // graph-wired skill can be the cursor); every other mode
2582
+ // returns the activation confirmation, which would promise an
2583
+ // activation that is not pending. `ceilingRefused` is the third
2584
+ // shape `result` can hold — a `resultCeiling`/`resultColumns`
2585
+ // refusal composed above — and it is nobody's instructions.
2586
+ ...(typeof result === 'string' &&
2587
+ !ceilingRefused &&
2588
+ result !== (0, skillToolDescriptors_js_1.skillActivationConfirmation)(reqId) && { body: result }),
2589
+ });
2590
+ (0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.skill.rejected', {
2591
+ requestedId: reqId,
2592
+ currentSkillId,
2593
+ allowed,
2594
+ iteration,
2595
+ reason: 'self-call',
2596
+ });
2597
+ noteSkillRefusal(scope, iteration);
2598
+ }
2516
2599
  else if (!allowed.includes(reqId)) {
2517
2600
  skillRejected = true;
2518
2601
  result = skillRefusal(reqId, allowed, deps.skillGraphIsTree === true);
@@ -2521,6 +2604,7 @@ function buildToolCallsHandler(deps) {
2521
2604
  ...(currentSkillId !== undefined && { currentSkillId }),
2522
2605
  allowed,
2523
2606
  iteration,
2607
+ reason: 'unreachable',
2524
2608
  });
2525
2609
  noteSkillRefusal(scope, iteration);
2526
2610
  }
@@ -2543,6 +2627,7 @@ function buildToolCallsHandler(deps) {
2543
2627
  allowed,
2544
2628
  iteration,
2545
2629
  posture: deps.skillStrictness,
2630
+ reason: 'posture',
2546
2631
  });
2547
2632
  noteSkillRefusal(scope, iteration);
2548
2633
  }