agentfootprint 9.83.0 → 9.84.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 (106) hide show
  1. package/CHANGELOG.md +635 -512
  2. package/dist/core/Agent.js +10 -0
  3. package/dist/core/Agent.js.map +1 -1
  4. package/dist/core/agent/AgentBuilder.js.map +1 -1
  5. package/dist/core/agent/evidence/frames.js +15 -6
  6. package/dist/core/agent/evidence/frames.js.map +1 -1
  7. package/dist/core/agent/outputEnforcement.js +7 -4
  8. package/dist/core/agent/outputEnforcement.js.map +1 -1
  9. package/dist/core/agent/selfCallNotice.js +174 -0
  10. package/dist/core/agent/selfCallNotice.js.map +1 -0
  11. package/dist/core/agent/stages/toolCalls.js +87 -2
  12. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  13. package/dist/core/agent/window/currentRequest.js +11 -13
  14. package/dist/core/agent/window/currentRequest.js.map +1 -1
  15. package/dist/core/agent/window/notice.js +9 -9
  16. package/dist/core/agent/window/notice.js.map +1 -1
  17. package/dist/core/agent/window/summarize.js +9 -9
  18. package/dist/core/agent/window/summarize.js.map +1 -1
  19. package/dist/doors/skill-graph.js +2 -1
  20. package/dist/doors/skill-graph.js.map +1 -1
  21. package/dist/esm/core/Agent.js +10 -0
  22. package/dist/esm/core/Agent.js.map +1 -1
  23. package/dist/esm/core/agent/AgentBuilder.d.ts +15 -0
  24. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  25. package/dist/esm/core/agent/evidence/frames.d.ts +9 -4
  26. package/dist/esm/core/agent/evidence/frames.js +13 -5
  27. package/dist/esm/core/agent/evidence/frames.js.map +1 -1
  28. package/dist/esm/core/agent/outputEnforcement.d.ts +1 -2
  29. package/dist/esm/core/agent/outputEnforcement.js +4 -2
  30. package/dist/esm/core/agent/outputEnforcement.js.map +1 -1
  31. package/dist/esm/core/agent/selfCallNotice.d.ts +140 -0
  32. package/dist/esm/core/agent/selfCallNotice.js +169 -0
  33. package/dist/esm/core/agent/selfCallNotice.js.map +1 -0
  34. package/dist/esm/core/agent/stages/toolCalls.d.ts +6 -0
  35. package/dist/esm/core/agent/stages/toolCalls.js +87 -2
  36. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  37. package/dist/esm/core/agent/window/currentRequest.d.ts +9 -3
  38. package/dist/esm/core/agent/window/currentRequest.js +11 -13
  39. package/dist/esm/core/agent/window/currentRequest.js.map +1 -1
  40. package/dist/esm/core/agent/window/notice.d.ts +1 -4
  41. package/dist/esm/core/agent/window/notice.js +5 -6
  42. package/dist/esm/core/agent/window/notice.js.map +1 -1
  43. package/dist/esm/core/agent/window/summarize.d.ts +1 -4
  44. package/dist/esm/core/agent/window/summarize.js +5 -6
  45. package/dist/esm/core/agent/window/summarize.js.map +1 -1
  46. package/dist/esm/doors/skill-graph.d.ts +1 -1
  47. package/dist/esm/doors/skill-graph.js +1 -1
  48. package/dist/esm/doors/skill-graph.js.map +1 -1
  49. package/dist/esm/events/payloads.d.ts +15 -0
  50. package/dist/esm/index.d.ts +1 -0
  51. package/dist/esm/index.js +8 -0
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/lib/injection-engine/index.d.ts +1 -0
  54. package/dist/esm/lib/injection-engine/index.js +6 -0
  55. package/dist/esm/lib/injection-engine/index.js.map +1 -1
  56. package/dist/esm/lib/injection-engine/skillToolDescriptors.d.ts +29 -0
  57. package/dist/esm/lib/injection-engine/skillToolDescriptors.js +90 -7
  58. package/dist/esm/lib/injection-engine/skillToolDescriptors.js.map +1 -1
  59. package/dist/esm/lib/injection-engine/types.d.ts +54 -0
  60. package/dist/esm/lib/injection-engine/types.js +28 -0
  61. package/dist/esm/lib/injection-engine/types.js.map +1 -1
  62. package/dist/esm/lib/saidByPerson.d.ts +99 -0
  63. package/dist/esm/lib/saidByPerson.js +104 -0
  64. package/dist/esm/lib/saidByPerson.js.map +1 -0
  65. package/dist/index.js +14 -3
  66. package/dist/index.js.map +1 -1
  67. package/dist/lib/injection-engine/index.js +9 -2
  68. package/dist/lib/injection-engine/index.js.map +1 -1
  69. package/dist/lib/injection-engine/skillToolDescriptors.js +92 -8
  70. package/dist/lib/injection-engine/skillToolDescriptors.js.map +1 -1
  71. package/dist/lib/injection-engine/types.js +30 -1
  72. package/dist/lib/injection-engine/types.js.map +1 -1
  73. package/dist/lib/saidByPerson.js +111 -0
  74. package/dist/lib/saidByPerson.js.map +1 -0
  75. package/dist/types/core/Agent.d.ts.map +1 -1
  76. package/dist/types/core/agent/AgentBuilder.d.ts +15 -0
  77. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  78. package/dist/types/core/agent/evidence/frames.d.ts +9 -4
  79. package/dist/types/core/agent/evidence/frames.d.ts.map +1 -1
  80. package/dist/types/core/agent/outputEnforcement.d.ts +1 -2
  81. package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -1
  82. package/dist/types/core/agent/selfCallNotice.d.ts +141 -0
  83. package/dist/types/core/agent/selfCallNotice.d.ts.map +1 -0
  84. package/dist/types/core/agent/stages/toolCalls.d.ts +6 -0
  85. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  86. package/dist/types/core/agent/window/currentRequest.d.ts +9 -3
  87. package/dist/types/core/agent/window/currentRequest.d.ts.map +1 -1
  88. package/dist/types/core/agent/window/notice.d.ts +1 -4
  89. package/dist/types/core/agent/window/notice.d.ts.map +1 -1
  90. package/dist/types/core/agent/window/summarize.d.ts +1 -4
  91. package/dist/types/core/agent/window/summarize.d.ts.map +1 -1
  92. package/dist/types/doors/skill-graph.d.ts +1 -1
  93. package/dist/types/doors/skill-graph.d.ts.map +1 -1
  94. package/dist/types/events/payloads.d.ts +15 -0
  95. package/dist/types/events/payloads.d.ts.map +1 -1
  96. package/dist/types/index.d.ts +1 -0
  97. package/dist/types/index.d.ts.map +1 -1
  98. package/dist/types/lib/injection-engine/index.d.ts +1 -0
  99. package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
  100. package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts +29 -0
  101. package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts.map +1 -1
  102. package/dist/types/lib/injection-engine/types.d.ts +54 -0
  103. package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
  104. package/dist/types/lib/saidByPerson.d.ts +100 -0
  105. package/dist/types/lib/saidByPerson.d.ts.map +1 -0
  106. package/package.json +1 -1
@@ -24,8 +24,11 @@
24
24
  * constant — see {@link retentionSentence}.
25
25
  * Emits: N/A (the stage emits; this file only builds and calls).
26
26
  */
27
- /** Opening of the authored label. Stable — tests and readers match on it. */
28
- export const COMPACTED_FRAME_PREFIX = '[compacted history';
27
+ import { COMPACTED_FRAME_PREFIX } from '../../../lib/saidByPerson.js';
28
+ // The marker and its recognizer live in the leaf both this file and the
29
+ // injection engine can import — a rule author has to be able to apply the same
30
+ // rule the window applies (9.84.0). The label below is still ours.
31
+ export { COMPACTED_FRAME_PREFIX, isCompactedSummary } from '../../../lib/saidByPerson.js';
29
32
  /** Delimiters that mark the untrusted transcript inside the summarizer prompt. */
30
33
  const TRANSCRIPT_OPEN = '<<<TRANSCRIPT>>>';
31
34
  const TRANSCRIPT_CLOSE = '<<<END TRANSCRIPT>>>';
@@ -103,10 +106,6 @@ export function buildSummaryMessage(summary, facts) {
103
106
  `${retentionSentence(facts.retain)}]`;
104
107
  return { role: 'user', content: `${label}\n\n${summary}` };
105
108
  }
106
- /** True when this message is a frame a previous fold wrote. */
107
- export function isCompactedSummary(msg) {
108
- return msg !== undefined && msg.role === 'user' && msg.content.startsWith(COMPACTED_FRAME_PREFIX);
109
- }
110
109
  /**
111
110
  * Call the summarizer over the folded span.
112
111
  *
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../../../src/core/agent/window/summarize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../../../src/core/agent/window/summarize.ts"],"names":[],"mappings":"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"}
@@ -103,7 +103,7 @@
103
103
  * ```
104
104
  */
105
105
  export type { ActiveInjection, Injection, InjectionContent, InjectionContext, InjectionEvaluation, InjectionTrigger, } from '../lib/injection-engine/types.js';
106
- export { projectActiveInjection, toolResultsOf } from '../lib/injection-engine/types.js';
106
+ export { projectActiveInjection, saidByPerson, toolResultsOf, } from '../lib/injection-engine/types.js';
107
107
  export { evaluateInjections } from '../lib/injection-engine/evaluator.js';
108
108
  export type { SkillCachePolicy, SkillCachePolicyContext, SkillGraphHost, SkillGraphIterationContext, SkillTool, SkillToolDescriptor, SkillToolSchema, } from '../lib/injection-engine/hostContract.js';
109
109
  export { TOOL_RESULT_STATUSES, type ToolResultStatus, } from '../lib/injection-engine/toolOutcome.js';
@@ -102,7 +102,7 @@
102
102
  * const readSkill = readSkillDescriptor(graph.skills, { grantable: offered });
103
103
  * ```
104
104
  */
105
- export { projectActiveInjection, toolResultsOf } from '../lib/injection-engine/types.js';
105
+ export { projectActiveInjection, saidByPerson, toolResultsOf, } from '../lib/injection-engine/types.js';
106
106
  export { evaluateInjections } from '../lib/injection-engine/evaluator.js';
107
107
  export { TOOL_RESULT_STATUSES, } from '../lib/injection-engine/toolOutcome.js';
108
108
  // ─── The graph (the SkillMap — the agent that mounts it is the SkillWalker) ─
@@ -1 +1 @@
1
- {"version":3,"file":"skill-graph.js","sourceRoot":"","sources":["../../../src/doors/skill-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuGG;AAWH,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAY1E,OAAO,EACL,oBAAoB,GAErB,MAAM,wCAAwC,CAAC;AAEhD,+EAA+E;AAC/E,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU;AACV,oEAAoE;AACpE,2EAA2E;AAC3E,yEAAyE;AACzE,6EAA6E;AAC7E,cAAc,EAEd,iCAAiC,EACjC,wBAAwB;AAKxB,0CAA0C;AAC1C,cAAc,EACd,iBAAiB,GAqClB,MAAM,uCAAuC,CAAC;AAG/C,0EAA0E;AAC1E,OAAO,EACL,eAAe,EACf,aAAa,EACb,WAAW,GAIZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,oBAAoB,GAKrB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,eAAe,GAKhB,MAAM,0CAA0C,CAAC;AAElD,0EAA0E;AAC1E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GAEpB,MAAM,iDAAiD,CAAC;AAEzD,0EAA0E;AAC1E,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,mBAAmB,GAMpB,MAAM,uCAAuC,CAAC;AAE/C,0EAA0E;AAC1E,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GAEf,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,yBAAyB,EACzB,YAAY,GAEb,MAAM,4CAA4C,CAAC;AAEpD,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,iCAAiC;AACjC,OAAO,EAAE,oBAAoB,EAAsB,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"skill-graph.js","sourceRoot":"","sources":["../../../src/doors/skill-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuGG;AAWH,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,aAAa,GACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAY1E,OAAO,EACL,oBAAoB,GAErB,MAAM,wCAAwC,CAAC;AAEhD,+EAA+E;AAC/E,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU;AACV,oEAAoE;AACpE,2EAA2E;AAC3E,yEAAyE;AACzE,6EAA6E;AAC7E,cAAc,EAEd,iCAAiC,EACjC,wBAAwB;AAKxB,0CAA0C;AAC1C,cAAc,EACd,iBAAiB,GAqClB,MAAM,uCAAuC,CAAC;AAG/C,0EAA0E;AAC1E,OAAO,EACL,eAAe,EACf,aAAa,EACb,WAAW,GAIZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,oBAAoB,GAKrB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,eAAe,GAKhB,MAAM,0CAA0C,CAAC;AAElD,0EAA0E;AAC1E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GAEpB,MAAM,iDAAiD,CAAC;AAEzD,0EAA0E;AAC1E,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,mBAAmB,GAMpB,MAAM,uCAAuC,CAAC;AAE/C,0EAA0E;AAC1E,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GAEf,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,yBAAyB,EACzB,YAAY,GAEb,MAAM,4CAA4C,CAAC;AAEpD,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,iCAAiC;AACjC,OAAO,EAAE,oBAAoB,EAAsB,MAAM,oCAAoC,CAAC"}
@@ -1164,6 +1164,21 @@ export interface SkillRejectedPayload {
1164
1164
  * (rules/scorer route turn starts; declared routes handle transitions).
1165
1165
  * Absent = today's reachability refusal, unchanged. */
1166
1166
  readonly posture?: 'guard' | 'rails';
1167
+ /** WHICH ARM of the gate answered (9.84.0) — optional, so every consumer
1168
+ * written against the older shape keeps working unchanged:
1169
+ *
1170
+ * • `'self-call'` — `requestedId === currentSkillId`. The model asked for
1171
+ * the skill it is already in; the cursor did not move because there was
1172
+ * nowhere to move it, and the tool result is an acknowledgement naming
1173
+ * the tools it can call, not a decline. Consumers that count refusals as
1174
+ * routing failures should read this one as a NAMING failure instead.
1175
+ * • `'unreachable'` — a genuine hop the cursor cannot make.
1176
+ * • `'posture'` — a reachable hop a declared `strictness` declined; pairs
1177
+ * with {@link SkillRejectedPayload.posture}, which names which one.
1178
+ *
1179
+ * Before this, telling a self-call from an unreachable hop meant comparing
1180
+ * `requestedId` against `currentSkillId` and knowing why that mattered. */
1181
+ readonly reason?: 'self-call' | 'unreachable' | 'posture';
1167
1182
  }
1168
1183
  /**
1169
1184
  * Fired when two or more tool results of ONE parallel batch matched skill-graph
@@ -34,6 +34,7 @@ export { type MessageApiChartDeps } from './core/agent/buildMessageApiChart.js';
34
34
  export { buildAgentMessageApiChart, type AgentMessageApiChartDeps, } from './core/agent/buildAgentMessageApiChart.js';
35
35
  export { Agent, AgentBuilder, type AgentArtifactsOptions, type AgentRecordingsOptions, type AgentInput, type AgentOptions, type AgentOutput, type ObserverDeliveryOptions, type RunConfig, type RunConfigContext, type RunConfigFn, type SkillGraphOptions, type ProviderChoice, type EscalationPolicy, } from './core/Agent.js';
36
36
  export { CompactionUnmeasurableError, COMPACTED_FRAME_PREFIX, DROP_NOTICE_PREFIX, foldedMessages, foldedSpanFor, isCompactedSummary, isDropNotice, slidingWindow, summarizeOldest, tokenBudget, type CompactionOptions, type CompactionRecord, type CompactionRetention, type FoldedConversation, type FoldedSpan, type RemovalFacts, type RemovalPlan, type SlidingWindowOptions, type SlidingWindowRecord, type TokenBudgetOptions, type TokenBudgetRecord, type Turn, type WindowEviction, type WindowObservations, type WindowRecord, type WindowRefusal, type WindowRefusalReason, type WindowStrategy, type WindowStrategyInput, type WindowStrategyResult, } from './core/agent/window/index.js';
37
+ export { isLibraryAuthoredFrame, isSaidByPerson, LIBRARY_AUTHORED_PREFIXES, type AuthoredMessage, } from './lib/saidByPerson.js';
37
38
  export type { SelfExplainInclude, SelfExplainOptions } from './lib/trace-toolpack/selfExplain.js';
38
39
  export type { ObserverDrainResult, ObserverStats } from 'footprintjs';
39
40
  export type { ToolArgValidationMode } from './core/agent/toolArgsValidation.js';
package/dist/esm/index.js CHANGED
@@ -148,6 +148,14 @@ export { Agent, AgentBuilder, } from './core/Agent.js';
148
148
  // checkpoint too, and `foldedSpanFor(conversation, message)` is the door back
149
149
  // to them after a restart.
150
150
  export { CompactionUnmeasurableError, COMPACTED_FRAME_PREFIX, DROP_NOTICE_PREFIX, foldedMessages, foldedSpanFor, isCompactedSummary, isDropNotice, slidingWindow, summarizeOldest, tokenBudget, } from './core/agent/window/index.js';
151
+ // Which `role: 'user'` message a PERSON wrote (9.84.0), and the registry of
152
+ // openings it is decided against. Five messages in a window carry that role
153
+ // without anybody having said them — a compaction frame, a drop notice, the two
154
+ // in-loop corrections, and a message an Injection delivered. This is the one
155
+ // test that tells them apart; the window's refusal engine and
156
+ // `saidByPerson(ctx)` on `agentfootprint/context` both call it, so no reader
157
+ // can hold a different rule.
158
+ export { isLibraryAuthoredFrame, isSaidByPerson, LIBRARY_AUTHORED_PREFIXES, } from './lib/saidByPerson.js';
151
159
  // 9.11.0 — the opt-in tool-result ceiling (`AgentOptions.maxToolResultChars`).
152
160
  // The marker is what a consumer reads off `stream.tool_end.result` and off the
153
161
  // `role: 'tool'` message, so the shape AND the guard are public; the measuring
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import './devWarnHost.js';
9
9
  export type { Injection, InjectionTrigger, InjectionContent, InjectionContext, InjectionEvaluation, ActiveInjection, } from './types.js';
10
10
  export { projectActiveInjection } from './types.js';
11
11
  export { toolResultsOf } from './types.js';
12
+ export { saidByPerson } from './types.js';
12
13
  export { evaluateInjections } from './evaluator.js';
13
14
  export { buildInjectionEngineSubflow, type InjectionEngineConfig, } from './buildInjectionEngineSubflow.js';
14
15
  export { defineInstruction, type DefineInstructionOptions } from './factories/defineInstruction.js';
@@ -19,6 +19,12 @@ export { projectActiveInjection } from './types.js';
19
19
  // (9.16.0) — the one reader `rule` predicates should use to see every call of
20
20
  // a parallel batch, not only the last (`ctx.toolResults ?? [ctx.lastToolResult]`).
21
21
  export { toolResultsOf } from './types.js';
22
+ // The messages a PERSON wrote (9.84.0) — the one reader for a predicate that
23
+ // judges what was said. `ctx.history` also holds the five user-role messages
24
+ // this library writes itself (compaction frame, drop notice, schema-check
25
+ // correction, evidence-check correction, delivered message), and a rule
26
+ // scanning it raw matches our own bookkeeping.
27
+ export { saidByPerson } from './types.js';
22
28
  // Engine
23
29
  export { evaluateInjections } from './evaluator.js';
24
30
  export { buildInjectionEngineSubflow, } from './buildInjectionEngineSubflow.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/index.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,23 @@ export interface ReadSkillOffer {
60
60
  * never read the policy's own message.
61
61
  */
62
62
  readonly hiddenIds?: readonly string[];
63
+ /**
64
+ * WHERE THE CURSOR STANDS — the skill the model is already IN (9.84.0).
65
+ *
66
+ * Passed on every call that has a cursor, menu or no menu. It does two jobs
67
+ * the offer could not do before: it NAMES the current skill in the
68
+ * description (previously only the menu's stay clause ever did, and a
69
+ * decisively-routed turn has no menu), and it keeps that skill out of the
70
+ * "Not reachable from here" list — where it appeared purely as an artefact of
71
+ * being filtered out of its own successor set.
72
+ *
73
+ * {@link ReadSkillOffer.menu}'s `cursorId` is the same value and still
74
+ * honoured; this one is simply not conditional on a menu being outstanding.
75
+ *
76
+ * It is NOT exempt from {@link ReadSkillOffer.hiddenIds}. A cursor the
77
+ * caller's role may not see is not named — see the filter in `describeOffer`.
78
+ */
79
+ readonly cursorId?: string;
63
80
  /**
64
81
  * Turn-start MENU (SG-C): when set, the description LEADS with these
65
82
  * candidates (id + one-line description; advisory relevance %s beside
@@ -117,3 +134,15 @@ export declare function listSkillsDescriptor(skills: readonly Injection[]): Skil
117
134
  export declare function readSkillDescriptor(skills: readonly Injection[], offer?: ReadSkillOffer): SkillToolDescriptor<{
118
135
  id: string;
119
136
  }, string> | undefined;
137
+ /**
138
+ * What `read_skill` answers when it activated a skill but did NOT carry its body
139
+ * (surface modes `'system-prompt'` / `'auto'` — the body lands via the system
140
+ * slot next iteration).
141
+ *
142
+ * Exported because the skill-graph gate has to tell this sentence apart from a
143
+ * body: a SELF-CALL keeps the body (the model asked to re-read where it is, and
144
+ * under `'tool-only'` the tool result is the only place that body ever appears)
145
+ * but must not keep a promise of an activation that is not pending. Comparing
146
+ * against the one owner of the string beats guessing at its shape.
147
+ */
148
+ export declare function skillActivationConfirmation(id: string): string;
@@ -43,15 +43,75 @@ function describeOffer(allSkills, line, fullCatalog, offer) {
43
43
  const pct = c.relevance !== undefined ? ` (relevance ~${Math.round(c.relevance * 100)}%)` : '';
44
44
  return `${line(byId.get(c.id))}${pct}`;
45
45
  });
46
+ // ── THE CURSOR IS NAMED ON EVERY CALL THAT HAS ONE (9.84.0) ─────────
47
+ // This used to be the STAY clause and nothing else, so it appeared only while
48
+ // a turn-start menu was outstanding. A turn that routed DECISIVELY has no
49
+ // menu — and therefore had no sentence anywhere telling the model which skill
50
+ // it was in. It received a body with no name on it, then read the gate's
51
+ // refusal of its own id as "that skill is unavailable" and gave up mid-turn.
52
+ // So the cursor rides the offer whenever it exists, and the stay clause still
53
+ // rides it when a menu is open.
54
+ //
55
+ // ROLE VISIBILITY WINS OVER THE POSITIVE SIGNAL. `hidden` is built above
56
+ // precisely so nothing below can name a hidden skill, and reading
57
+ // `offer.cursorId` raw walked past it: a role denied `skill_read` on the
58
+ // cursor's own skill was still told "You are in 'alpha'" — the one leak the
59
+ // hidden set exists to prevent, because it teaches a role the name of a
60
+ // capability no cursor move will ever make available to it. Naming nothing
61
+ // is the honest fallback: that role loses the positive signal, which is the
62
+ // price its own policy asked for.
63
+ const named = offer.cursorId ?? offer.menu?.cursorId;
64
+ const cursorId = named !== undefined && !hidden.has(named) ? named : undefined;
65
+ const staying = offer.menu?.stay === true && cursorId !== undefined;
66
+ // WHAT THE SECOND HALF MAY SAY: outside an outstanding menu, NOTHING.
67
+ //
68
+ // Naming the cursor is the whole fix for the production failure this release
69
+ // exists for — a model that could not tell it was already in a skill read a
70
+ // refusal as "unavailable" and gave up. Naming it is enough. Every sentence
71
+ // added ALONGSIDE the name has turned out false somewhere, five rounds
72
+ // running, and the last one is worth recording because it looked safest of
73
+ // all: " You do not need read_skill to go on using it." was argued to be a
74
+ // claim about NECESSITY that no posture, budget or hold-out could falsify.
75
+ // The PARK falsifies it. A parked map member keeps the cursor and loses its
76
+ // body and its tools, and `read_skill` is then the only door back — the
77
+ // re-engagement arm at `toolCalls.ts` exists precisely because 9.59.0 found
78
+ // that telling a parked model to answer with the current skill made parking
79
+ // permanent for the rest of the turn. This description cannot see the park
80
+ // (see the note below on hold-outs), so it cannot know when it would be
81
+ // lying. So it says the name and stops.
82
+ //
83
+ // What it must NOT say is what `read_skill` would DO from here. The deleted
84
+ // wording ("read_skill MOVES you to a DIFFERENT skill") was that, and it is
85
+ // false at compose time under two of the three declared postures: `'rails'`
86
+ // refuses every model hop outright and `'guard'` refuses every hop that is
87
+ // not on an outstanding menu, so `read_skill` moves nobody — the posture arm
88
+ // answers a taken-up pick with "read_skill here reaches only the open skills:
89
+ // …" and contradicts this sentence head-on. Nor is that fixable by making
90
+ // the sentence posture-aware: the gate's verdict also turns on whether the
91
+ // pick lands on a menu that is still outstanding, and on whether it is a
92
+ // parked map member the re-engagement arm admits — facts about a call that
93
+ // has not happened. A description that predicts the gate can only be a
94
+ // partial mirror, and a partial mirror is how each of the previous rounds
95
+ // ended. So it predicts nothing.
96
+ const cursorLead = cursorId === undefined
97
+ ? ''
98
+ : `You are in '${cursorId}'.` +
99
+ (staying
100
+ ? ` Staying is a first-class option: answer WITHOUT calling read_skill to ` +
101
+ `stay in '${cursorId}'.\n\n`
102
+ : `\n\n`);
103
+ // Deliberately no claim about tools here. This description is composed before
104
+ // the step and park hold-outs filter the wire, so it cannot see what actually
105
+ // rides; the gate's self-call notice names tools because it reads the merged
106
+ // list after the fact.
46
107
  const menuLead = offer.menu !== undefined && menuRows.length > 0
47
108
  ? `This turn needs a routing choice — no declared rule or intent decisively matched. ` +
48
109
  `Closest candidates (advisory; an offline scorer ranked them and cannot see the ` +
49
110
  `conversation):\n${menuRows.join('\n')}\n` +
50
- (offer.menu.stay === true && offer.menu.cursorId !== undefined
51
- ? `You are in '${offer.menu.cursorId}'. Staying is a first-class option: answer ` +
52
- `WITHOUT calling read_skill to stay in '${offer.menu.cursorId}'.\n\n`
53
- : `Answering WITHOUT calling read_skill is also allowed.\n\n`)
54
- : '';
111
+ (staying
112
+ ? cursorLead
113
+ : `Answering WITHOUT calling read_skill is also allowed.\n\n${cursorLead}`)
114
+ : cursorLead;
55
115
  if (offer.grantable === undefined) {
56
116
  // No graph — the plain catalog, filtered. A role with nothing left is told
57
117
  // plainly rather than handed an empty list to interpret.
@@ -64,7 +124,16 @@ function describeOffer(allSkills, line, fullCatalog, offer) {
64
124
  }
65
125
  const grantable = new Set(offer.grantable);
66
126
  const open = skills.filter((s) => grantable.has(s.id));
67
- const shut = skills.filter((s) => !grantable.has(s.id));
127
+ // The cursor is never in `grantable` — `makeReachableSkills` filters it out of
128
+ // its own successor set, because a MOVE to where you already are is not a move.
129
+ // Listing it under "Not reachable" turned that into a claim about
130
+ // AVAILABILITY, which is the one thing this list must not say about the skill
131
+ // the model is standing in. (What this point can and cannot see is settled 30
132
+ // lines up: the wire is composed AFTER this, so no claim about tools belongs
133
+ // in either column. The gate's self-call notice is where tools get named,
134
+ // because it reads the merged list after the fact.) It belongs in neither
135
+ // column, so it is named once, above, by `cursorLead`.
136
+ const shut = skills.filter((s) => !grantable.has(s.id) && s.id !== cursorId);
68
137
  const parts = [
69
138
  open.length > 0
70
139
  ? `Reachable from here:\n${open.map(line).join('\n')}`
@@ -175,8 +244,22 @@ export function readSkillDescriptor(skills, offer) {
175
244
  if ((entry.surfaceMode === 'tool-only' || entry.surfaceMode === 'both') && entry.body) {
176
245
  return entry.body;
177
246
  }
178
- return `Skill '${id}' activated for the next iteration.`;
247
+ return skillActivationConfirmation(id);
179
248
  },
180
249
  };
181
250
  }
251
+ /**
252
+ * What `read_skill` answers when it activated a skill but did NOT carry its body
253
+ * (surface modes `'system-prompt'` / `'auto'` — the body lands via the system
254
+ * slot next iteration).
255
+ *
256
+ * Exported because the skill-graph gate has to tell this sentence apart from a
257
+ * body: a SELF-CALL keeps the body (the model asked to re-read where it is, and
258
+ * under `'tool-only'` the tool result is the only place that body ever appears)
259
+ * but must not keep a promise of an activation that is not pending. Comparing
260
+ * against the one owner of the string beats guessing at its shape.
261
+ */
262
+ export function skillActivationConfirmation(id) {
263
+ return `Skill '${id}' activated for the next iteration.`;
264
+ }
182
265
  //# sourceMappingURL=skillToolDescriptors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skillToolDescriptors.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillToolDescriptors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillToolDescriptors.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillToolDescriptors.ts"],"names":[],"mappings":"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"}
@@ -134,11 +134,40 @@ export interface InjectionContext {
134
134
  /**
135
135
  * Conversation history up to (but not including) the current
136
136
  * iteration's LLM call. Includes prior iterations within the same turn.
137
+ *
138
+ * **Not everything with `role: 'user'` here was said by a person.** This
139
+ * library writes five kinds of user-role message itself — a compaction
140
+ * frame, a drop notice (whose text NAMES TOOLS), a schema-check correction,
141
+ * an evidence-check correction (which QUOTES the model's own values), and a
142
+ * message an Injection delivered — and all five sit in this list beside the
143
+ * real ones. Read the person's messages with {@link saidByPerson}; a
144
+ * predicate that scans raw `history` for a phrase will sooner or later match
145
+ * our own bookkeeping.
137
146
  */
138
147
  readonly history: ReadonlyArray<{
139
148
  readonly role: ContextRole;
140
149
  readonly content: string;
141
150
  readonly toolName?: string;
151
+ /**
152
+ * WHO let this message in, when it was not the conversation (9.84.0).
153
+ *
154
+ * Present exactly when an Injection's `messages` slot delivered it — the
155
+ * same marker `LLMMessage.injectedBy` carries, narrowed to the two fields
156
+ * a routing decision has any business reading. It was on the object all
157
+ * along; until 9.84.0 this type hid it, so a rule could hand-match the
158
+ * four authored frames by their opening text and still not see this, the
159
+ * fifth library-written class.
160
+ *
161
+ * Absent on every message that came from the conversation itself, which
162
+ * is what makes `injectedBy === undefined` half of the rule
163
+ * {@link saidByPerson} applies.
164
+ */
165
+ readonly injectedBy?: {
166
+ /** The `Injection.id` that produced this message. */
167
+ readonly injectionId: string;
168
+ /** The injection's flavor — the `source` the slot records. */
169
+ readonly flavor: ContextSource;
170
+ };
142
171
  }>;
143
172
  /**
144
173
  * The most recent tool result, if the previous iteration ended in a
@@ -316,6 +345,31 @@ export declare function toolResultsOf(ctx: InjectionContext): ReadonlyArray<{
316
345
  readonly toolCallId?: string;
317
346
  readonly status?: ToolResultStatus;
318
347
  }>;
348
+ /**
349
+ * The messages in `ctx.history` a PERSON actually wrote, in order (9.84.0).
350
+ * THE one reader for a predicate that judges what was said.
351
+ *
352
+ * Five kinds of `role: 'user'` message in that list came from this library,
353
+ * not from anybody: a compaction frame, a drop notice, the two in-loop
354
+ * corrections, and a message an Injection delivered. They are ours, they are
355
+ * in the person's voice, one of them names tools and two quote text the model
356
+ * or a validator produced — so a rule written as
357
+ *
358
+ * ```ts
359
+ * activeWhen: (ctx) => ctx.history.some((m) => m.content.includes('refund'))
360
+ * ```
361
+ *
362
+ * fires on a summary of a refund conversation and on a notice saying the
363
+ * refund tool's result was dropped. Written as
364
+ * `saidByPerson(ctx).some(...)`, it fires only when somebody said it.
365
+ *
366
+ * The test itself is `isSaidByPerson` in `lib/saidByPerson.ts` — the same
367
+ * function the window's refusal engine uses to decide which message it may
368
+ * never drop, imported rather than restated so the two answers cannot differ.
369
+ *
370
+ * @param ctx the iteration context a trigger or entry rule was handed
371
+ */
372
+ export declare function saidByPerson(ctx: InjectionContext): InjectionContext['history'];
319
373
  /**
320
374
  * THE primitive. Five fields. Four trigger kinds. Three slot targets.
321
375
  *
@@ -16,6 +16,7 @@
16
16
  * iteration. Slot subflows emit `agentfootprint.context.injected`
17
17
  * for each InjectionRecord they place.
18
18
  */
19
+ import { isSaidByPerson } from '../saidByPerson.js';
19
20
  import { renderTemplate } from './promptTemplate.js';
20
21
  /**
21
22
  * The iteration's tool-result batch, in call order — with the singular
@@ -29,6 +30,33 @@ import { renderTemplate } from './promptTemplate.js';
29
30
  export function toolResultsOf(ctx) {
30
31
  return ctx.toolResults ?? (ctx.lastToolResult ? [ctx.lastToolResult] : []);
31
32
  }
33
+ /**
34
+ * The messages in `ctx.history` a PERSON actually wrote, in order (9.84.0).
35
+ * THE one reader for a predicate that judges what was said.
36
+ *
37
+ * Five kinds of `role: 'user'` message in that list came from this library,
38
+ * not from anybody: a compaction frame, a drop notice, the two in-loop
39
+ * corrections, and a message an Injection delivered. They are ours, they are
40
+ * in the person's voice, one of them names tools and two quote text the model
41
+ * or a validator produced — so a rule written as
42
+ *
43
+ * ```ts
44
+ * activeWhen: (ctx) => ctx.history.some((m) => m.content.includes('refund'))
45
+ * ```
46
+ *
47
+ * fires on a summary of a refund conversation and on a notice saying the
48
+ * refund tool's result was dropped. Written as
49
+ * `saidByPerson(ctx).some(...)`, it fires only when somebody said it.
50
+ *
51
+ * The test itself is `isSaidByPerson` in `lib/saidByPerson.ts` — the same
52
+ * function the window's refusal engine uses to decide which message it may
53
+ * never drop, imported rather than restated so the two answers cannot differ.
54
+ *
55
+ * @param ctx the iteration context a trigger or entry rule was handed
56
+ */
57
+ export function saidByPerson(ctx) {
58
+ return ctx.history.filter(isSaidByPerson);
59
+ }
32
60
  /**
33
61
  * Project a full Injection (with functions) into a scope-safe POJO.
34
62
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAiSrD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,GAAqB;IAMjD,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC;AAoMD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAc,EACd,GAA2D;IAE3D,qEAAqE;IACrE,+DAA+D;IAC/D,0EAA0E;IAC1E,2EAA2E;IAC3E,sBAAsB;IACtB,MAAM,IAAI,GAAG,GAAG,CAAC,QAEJ,CAAC;IACd,wEAAwE;IACxE,2EAA2E;IAC3E,kDAAkD;IAClD,MAAM,YAAY,GAChB,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS;QAC7D,CAAC,CAAC,GAAG,KAAK,SAAS;YACjB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;QAChD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;IAC9B,MAAM,GAAG,GAAoB;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAA6C,EAAE,CAAC;QAC7F,GAAG,CAAC,IAAI,EAAE,YAAY,IAAI;YACxB,YAAY,EAAE,IAAI,CAAC,YAA+C;SACnE,CAAC;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAiC;SAC9C,CAAC;QACF,MAAM,EAAE;YACN,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;YAC9E,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;gBACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;oBACvB,WAAW,EAAE,GAAG,CAAC,EAAE;iBACpB,CAAC,CAAC;aACJ,CAAC;SACH;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA8TrD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,GAAqB;IAMjD,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,YAAY,CAAC,GAAqB;IAChD,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC5C,CAAC;AAoMD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAc,EACd,GAA2D;IAE3D,qEAAqE;IACrE,+DAA+D;IAC/D,0EAA0E;IAC1E,2EAA2E;IAC3E,sBAAsB;IACtB,MAAM,IAAI,GAAG,GAAG,CAAC,QAEJ,CAAC;IACd,wEAAwE;IACxE,2EAA2E;IAC3E,kDAAkD;IAClD,MAAM,YAAY,GAChB,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS;QAC7D,CAAC,CAAC,GAAG,KAAK,SAAS;YACjB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;QAChD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;IAC9B,MAAM,GAAG,GAAoB;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAA6C,EAAE,CAAC;QAC7F,GAAG,CAAC,IAAI,EAAE,YAAY,IAAI;YACxB,YAAY,EAAE,IAAI,CAAC,YAA+C;SACnE,CAAC;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAiC;SAC9C,CAAC;QACF,MAAM,EAAE;YACN,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;YAC9E,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;gBACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;oBACvB,WAAW,EAAE,GAAG,CAAC,EAAE;iBACpB,CAAC,CAAC;aACJ,CAAC;SACH;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * saidByPerson — which `role: 'user'` message a PERSON wrote, and which ones
3
+ * this library wrote in a person's voice.
4
+ *
5
+ * Pattern: One predicate over one message, over a registry of frames. No
6
+ * imports, no state, no clock.
7
+ * Role: Leaf. Several layers ask the same question and must not answer it
8
+ * differently: the window's refusal engine (`currentRequest.ts`,
9
+ * which will not let a strategy drop the request), the four authors
10
+ * of library-written user turns (`window/notice.ts`,
11
+ * `window/summarize.ts`, `outputEnforcement.ts`, `evidence/gate.ts`
12
+ * — they own the sentences and take the markers from here), and —
13
+ * since 9.84.0 — a rule author reading `InjectionContext.history`
14
+ * (`saidByPerson(ctx)`).
15
+ * Emits: N/A.
16
+ *
17
+ * ## Why this is a leaf and not a private helper
18
+ *
19
+ * This library writes FIVE kinds of `role: 'user'` message that nobody said:
20
+ * a compaction frame, a drop notice, a schema-check correction, an
21
+ * evidence-check correction, and a message an Injection delivered. The window
22
+ * layer knew two of them and the marker; the evidence layer knew the other two
23
+ * (`evidence/frames.ts`); neither list was reachable from the routing layer at
24
+ * all — the skill-graph fence forbids it from importing the agent loop, and
25
+ * rightly. So a predicate reading `history` could filter some of the classes
26
+ * and not the rest, and would match on our own bookkeeping text.
27
+ *
28
+ * A drop notice NAMES TOOLS ("Tool results are among them (lookup_order) …").
29
+ * A rule watching history for a tool name therefore fired on the notice about
30
+ * that tool's result leaving the window — pinning a skill on exactly the long
31
+ * sessions where the notice appears, which is the opposite of what the author
32
+ * wrote. That is a fixable bug in one place only: the rule has to be one
33
+ * implementation both sides import, not two that agree until they do not.
34
+ *
35
+ * The markers move here with it, as a LIST rather than four constants in four
36
+ * files. A prefix is what the recognizer matches AND what the writer emits;
37
+ * separating those is how a prefix silently stops being recognized, and a
38
+ * sixth authored frame that lands anywhere else is a hole nobody will see
39
+ * until a rule fires on it. Adding one means adding it to
40
+ * {@link LIBRARY_AUTHORED_PREFIXES}, and every reader is fixed at once.
41
+ */
42
+ /**
43
+ * The fields authorship is decided from — structural, so both
44
+ * `LLMMessage` (the wire shape) and `InjectionContext.history[n]` (the
45
+ * read-only view a predicate gets) satisfy it unchanged.
46
+ *
47
+ * `injectedBy` is `unknown` here on purpose: this file only ever asks whether
48
+ * the marker is PRESENT, and typing its interior would make a leaf that must
49
+ * import nothing into a mirror that can drift.
50
+ */
51
+ export interface AuthoredMessage {
52
+ readonly role: string;
53
+ readonly content: string;
54
+ readonly injectedBy?: unknown;
55
+ }
56
+ /** Opening of the authored notice a DROP leaves behind. Stable — tests and
57
+ * readers match on it. Written by `buildDropNotice`. */
58
+ export declare const DROP_NOTICE_PREFIX = "[dropped history";
59
+ /** Opening of the authored label a FOLD leaves behind. Stable — tests and
60
+ * readers match on it. Written by `buildSummaryMessage`. */
61
+ export declare const COMPACTED_FRAME_PREFIX = "[compacted history";
62
+ /** Opening of the authored frame a failed output validation writes. Stable —
63
+ * tests and readers match on it. Written by `buildCorrectiveTurn`. */
64
+ export declare const SCHEMA_CHECK_FRAME_PREFIX = "[schema check";
65
+ /** Opening of the authored frame the evidence gate writes. Stable — tests,
66
+ * docs and readers match on it. Written by `buildEvidenceCorrection`. */
67
+ export declare const EVIDENCE_CHECK_FRAME_PREFIX = "[evidence check";
68
+ /**
69
+ * Every opening this library puts on a `role: 'user'` message it wrote itself.
70
+ *
71
+ * The registry, not a convenience: this is the list a reader has to have ALL
72
+ * of to answer "did a person say this?", and until 9.84.0 no reader had it —
73
+ * the window held two entries, the evidence gate held the other two, and the
74
+ * routing layer could reach neither. A new authored frame belongs here on the
75
+ * day it is written.
76
+ *
77
+ * The two correction frames both QUOTE untrusted text after their label (a
78
+ * validator's error, the model's own flagged values), which is exactly why
79
+ * they are matched by PREFIX and never by anything further in.
80
+ */
81
+ export declare const LIBRARY_AUTHORED_PREFIXES: readonly string[];
82
+ /** True when this user-role message opens with a frame this library authored. */
83
+ export declare function isLibraryAuthoredFrame(msg: AuthoredMessage | undefined): boolean;
84
+ /** True when this message is a notice a previous drop wrote. */
85
+ export declare function isDropNotice(msg: AuthoredMessage | undefined): boolean;
86
+ /** True when this message is a frame a previous fold wrote. */
87
+ export declare function isCompactedSummary(msg: AuthoredMessage | undefined): boolean;
88
+ /**
89
+ * THE rule: true when this message is something a PERSON said.
90
+ *
91
+ * Deliberately narrow, and narrow in one direction: a message we are not sure
92
+ * about is not credited to a person. The exclusions are the ways this library
93
+ * authors a user turn — a delivery marker its own stage stamps, and the frames
94
+ * in {@link LIBRARY_AUTHORED_PREFIXES} — never a guess at prose.
95
+ *
96
+ * A message from a restored conversation, a hand-built window, or a person
97
+ * typing passes every exclusion and is theirs.
98
+ */
99
+ export declare function isSaidByPerson(msg: AuthoredMessage | undefined): boolean;