@polpo-ai/core 0.15.43 → 0.15.45

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 (109) hide show
  1. package/README.md +163 -0
  2. package/dist/__tests__/guardrail-detectors.test.d.ts +2 -0
  3. package/dist/__tests__/guardrail-detectors.test.d.ts.map +1 -0
  4. package/dist/__tests__/guardrail-detectors.test.js +316 -0
  5. package/dist/__tests__/guardrail-detectors.test.js.map +1 -0
  6. package/dist/__tests__/guardrail-engine.test.d.ts +2 -0
  7. package/dist/__tests__/guardrail-engine.test.d.ts.map +1 -0
  8. package/dist/__tests__/guardrail-engine.test.js +455 -0
  9. package/dist/__tests__/guardrail-engine.test.js.map +1 -0
  10. package/dist/__tests__/loop-context-trust.test.d.ts +2 -0
  11. package/dist/__tests__/loop-context-trust.test.d.ts.map +1 -0
  12. package/dist/__tests__/loop-context-trust.test.js +41 -0
  13. package/dist/__tests__/loop-context-trust.test.js.map +1 -0
  14. package/dist/__tests__/output-guardrails.test.d.ts +2 -0
  15. package/dist/__tests__/output-guardrails.test.d.ts.map +1 -0
  16. package/dist/__tests__/output-guardrails.test.js +151 -0
  17. package/dist/__tests__/output-guardrails.test.js.map +1 -0
  18. package/dist/__tests__/runtime-context.test.d.ts +2 -0
  19. package/dist/__tests__/runtime-context.test.d.ts.map +1 -0
  20. package/dist/__tests__/runtime-context.test.js +204 -0
  21. package/dist/__tests__/runtime-context.test.js.map +1 -0
  22. package/dist/__tests__/runtime-inspection.test.d.ts +2 -0
  23. package/dist/__tests__/runtime-inspection.test.d.ts.map +1 -0
  24. package/dist/__tests__/runtime-inspection.test.js +189 -0
  25. package/dist/__tests__/runtime-inspection.test.js.map +1 -0
  26. package/dist/__tests__/task-execution-router.test.js +62 -0
  27. package/dist/__tests__/task-execution-router.test.js.map +1 -1
  28. package/dist/__tests__/task-runner-guardrail-events.test.d.ts +2 -0
  29. package/dist/__tests__/task-runner-guardrail-events.test.d.ts.map +1 -0
  30. package/dist/__tests__/task-runner-guardrail-events.test.js +130 -0
  31. package/dist/__tests__/task-runner-guardrail-events.test.js.map +1 -0
  32. package/dist/adapter.d.ts +24 -2
  33. package/dist/adapter.d.ts.map +1 -1
  34. package/dist/events.d.ts +7 -0
  35. package/dist/events.d.ts.map +1 -1
  36. package/dist/guardrails/detectors.d.ts +24 -0
  37. package/dist/guardrails/detectors.d.ts.map +1 -0
  38. package/dist/guardrails/detectors.js +416 -0
  39. package/dist/guardrails/detectors.js.map +1 -0
  40. package/dist/guardrails/engine.d.ts +12 -0
  41. package/dist/guardrails/engine.d.ts.map +1 -0
  42. package/dist/guardrails/engine.js +189 -0
  43. package/dist/guardrails/engine.js.map +1 -0
  44. package/dist/guardrails/errors.d.ts +17 -0
  45. package/dist/guardrails/errors.d.ts.map +1 -0
  46. package/dist/guardrails/errors.js +23 -0
  47. package/dist/guardrails/errors.js.map +1 -0
  48. package/dist/guardrails/index.d.ts +8 -0
  49. package/dist/guardrails/index.d.ts.map +1 -0
  50. package/dist/guardrails/index.js +7 -0
  51. package/dist/guardrails/index.js.map +1 -0
  52. package/dist/guardrails/output-policy.d.ts +4 -0
  53. package/dist/guardrails/output-policy.d.ts.map +1 -0
  54. package/dist/guardrails/output-policy.js +64 -0
  55. package/dist/guardrails/output-policy.js.map +1 -0
  56. package/dist/guardrails/settings.d.ts +12 -0
  57. package/dist/guardrails/settings.d.ts.map +1 -0
  58. package/dist/guardrails/settings.js +108 -0
  59. package/dist/guardrails/settings.js.map +1 -0
  60. package/dist/guardrails/tool-middleware.d.ts +15 -0
  61. package/dist/guardrails/tool-middleware.d.ts.map +1 -0
  62. package/dist/guardrails/tool-middleware.js +158 -0
  63. package/dist/guardrails/tool-middleware.js.map +1 -0
  64. package/dist/guardrails/types.d.ts +148 -0
  65. package/dist/guardrails/types.d.ts.map +1 -0
  66. package/dist/guardrails/types.js +2 -0
  67. package/dist/guardrails/types.js.map +1 -0
  68. package/dist/index.d.ts +2 -0
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +4 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/loop/step-helpers.d.ts +2 -1
  73. package/dist/loop/step-helpers.d.ts.map +1 -1
  74. package/dist/loop/step-helpers.js +37 -4
  75. package/dist/loop/step-helpers.js.map +1 -1
  76. package/dist/runtime-context/context.d.ts +17 -0
  77. package/dist/runtime-context/context.d.ts.map +1 -0
  78. package/dist/runtime-context/context.js +338 -0
  79. package/dist/runtime-context/context.js.map +1 -0
  80. package/dist/runtime-context/index.d.ts +2 -1
  81. package/dist/runtime-context/index.d.ts.map +1 -1
  82. package/dist/runtime-context/index.js +1 -0
  83. package/dist/runtime-context/index.js.map +1 -1
  84. package/dist/runtime-context/types.d.ts +30 -0
  85. package/dist/runtime-context/types.d.ts.map +1 -1
  86. package/dist/runtime-context/types.js.map +1 -1
  87. package/dist/runtime-inspection/accounting.d.ts +4 -0
  88. package/dist/runtime-inspection/accounting.d.ts.map +1 -0
  89. package/dist/runtime-inspection/accounting.js +145 -0
  90. package/dist/runtime-inspection/accounting.js.map +1 -0
  91. package/dist/runtime-inspection/index.d.ts +4 -0
  92. package/dist/runtime-inspection/index.d.ts.map +1 -0
  93. package/dist/runtime-inspection/index.js +3 -0
  94. package/dist/runtime-inspection/index.js.map +1 -0
  95. package/dist/runtime-inspection/types.d.ts +40 -0
  96. package/dist/runtime-inspection/types.d.ts.map +1 -0
  97. package/dist/runtime-inspection/types.js +22 -0
  98. package/dist/runtime-inspection/types.js.map +1 -0
  99. package/dist/task-runner.d.ts +1 -0
  100. package/dist/task-runner.d.ts.map +1 -1
  101. package/dist/task-runner.js +97 -15
  102. package/dist/task-runner.js.map +1 -1
  103. package/dist/types/agent.d.ts +8 -0
  104. package/dist/types/agent.d.ts.map +1 -1
  105. package/dist/types/agent.js.map +1 -1
  106. package/dist/types/config.d.ts +17 -1
  107. package/dist/types/config.d.ts.map +1 -1
  108. package/dist/types/config.js.map +1 -1
  109. package/package.json +10 -1
@@ -1,4 +1,5 @@
1
1
  import type { RuntimeInvocationSource, RuntimeSurface } from "../runtime-plan/index.js";
2
+ import type { RuntimeGuardrailDecision } from "../runtime-plan/types.js";
2
3
  export declare const RUNTIME_CONTEXT_SEGMENT_KINDS: readonly ["memory", "brain"];
3
4
  export type RuntimeContextSegmentKind = (typeof RUNTIME_CONTEXT_SEGMENT_KINDS)[number];
4
5
  export declare const RUNTIME_CONTEXT_TRUST_LEVELS: readonly ["trusted", "user_provided", "external", "untrusted"];
@@ -72,4 +73,33 @@ export interface RuntimeContextProvider {
72
73
  export interface ResolveRuntimeContextOptions {
73
74
  readonly now?: () => Date | string;
74
75
  }
76
+ /**
77
+ * Trust assigned to prompt-bound context. This is intentionally separate from
78
+ * retrieval-entry trust because it also covers system and developer content.
79
+ */
80
+ export type RuntimePromptContextTrust = "system" | "developer" | "user" | "external" | "untrusted";
81
+ /**
82
+ * Prompt-context protection is opt-in until a host explicitly enables it.
83
+ * The serializable value survives process and deployment boundaries.
84
+ */
85
+ export type RuntimeContextTrustMode = "off" | "enforce";
86
+ export interface RuntimePromptContextSegment {
87
+ readonly kind: string;
88
+ readonly sourceId?: string;
89
+ readonly trust: RuntimePromptContextTrust;
90
+ readonly content: string;
91
+ readonly truncated?: boolean;
92
+ readonly findings?: readonly RuntimeGuardrailDecision[];
93
+ }
94
+ export interface CreateRuntimePromptContextSegmentInput {
95
+ readonly kind: string;
96
+ readonly sourceId?: string;
97
+ readonly trust: RuntimePromptContextTrust;
98
+ readonly content: string;
99
+ readonly truncated?: boolean;
100
+ readonly findings?: readonly RuntimeGuardrailDecision[];
101
+ }
102
+ export interface RuntimePromptContextSegmentOptions {
103
+ readonly maxCharacters?: number;
104
+ }
75
105
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime-context/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime-context/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime-context/types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAC;AAI1E,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,SAAS;IACT,eAAe;IACf,UAAU;IACV,WAAW;CACH,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime-context/types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAC;AAI1E,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,SAAS;IACT,eAAe;IACf,UAAU;IACV,WAAW;CACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type RuntimeContextAccounting, type RuntimeContextAccountingSegment, type RuntimeContextAccountingSegmentCategory } from "./types.js";
2
+ export declare function normalizeRuntimeContextAccountingSegmentCategory(value: unknown): RuntimeContextAccountingSegmentCategory;
3
+ export declare function createRuntimeContextAccounting(input: readonly RuntimeContextAccountingSegment[]): RuntimeContextAccounting;
4
+ //# sourceMappingURL=accounting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounting.d.ts","sourceRoot":"","sources":["../../src/runtime-inspection/accounting.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,uCAAuC,EAG7C,MAAM,YAAY,CAAC;AAQpB,wBAAgB,gDAAgD,CAC9D,KAAK,EAAE,OAAO,GACb,uCAAuC,CAIzC;AAgED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,SAAS,+BAA+B,EAAE,GAChD,wBAAwB,CAgH1B"}
@@ -0,0 +1,145 @@
1
+ import { RUNTIME_CONTEXT_ACCOUNTING_VERSION, RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_CATEGORIES, RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_KINDS, } from "./types.js";
2
+ const MAX_ACCOUNTING_SEGMENTS = 10_000;
3
+ const categorySet = new Set(RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_CATEGORIES);
4
+ const kindSet = new Set(RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_KINDS);
5
+ export function normalizeRuntimeContextAccountingSegmentCategory(value) {
6
+ return typeof value === "string" && categorySet.has(value)
7
+ ? value
8
+ : "other";
9
+ }
10
+ function assertText(value, field) {
11
+ if (typeof value !== "string" || value.trim().length === 0) {
12
+ throw new TypeError(`${field} must be a non-empty string`);
13
+ }
14
+ return value;
15
+ }
16
+ function assertCount(value, field) {
17
+ if (typeof value !== "number"
18
+ || !Number.isSafeInteger(value)
19
+ || value < 0) {
20
+ throw new TypeError(`${field} must be a non-negative safe integer`);
21
+ }
22
+ return value;
23
+ }
24
+ function assertKind(value) {
25
+ if (typeof value !== "string" || !kindSet.has(value)) {
26
+ throw new TypeError(`Unknown runtime context segment kind: ${String(value)}`);
27
+ }
28
+ return value;
29
+ }
30
+ function assertBoolean(value, field) {
31
+ if (typeof value !== "boolean") {
32
+ throw new TypeError(`${field} must be a boolean`);
33
+ }
34
+ return value;
35
+ }
36
+ function addCount(current, value, field) {
37
+ const total = current + value;
38
+ if (!Number.isSafeInteger(total)) {
39
+ throw new RangeError(`${field} exceeds the maximum safe integer`);
40
+ }
41
+ return total;
42
+ }
43
+ function copySegment(input) {
44
+ const segment = {
45
+ id: assertText(input.id, "segment.id"),
46
+ label: assertText(input.label, "segment.label"),
47
+ category: normalizeRuntimeContextAccountingSegmentCategory(input.category),
48
+ kind: assertKind(input.kind),
49
+ tokens: assertCount(input.tokens, "segment.tokens"),
50
+ ...(input.characters === undefined
51
+ ? {}
52
+ : { characters: assertCount(input.characters, "segment.characters") }),
53
+ ...(input.items === undefined
54
+ ? {}
55
+ : { items: assertCount(input.items, "segment.items") }),
56
+ ...(input.deferred === undefined
57
+ ? {}
58
+ : { deferred: assertBoolean(input.deferred, "segment.deferred") }),
59
+ };
60
+ return Object.freeze(segment);
61
+ }
62
+ export function createRuntimeContextAccounting(input) {
63
+ if (!Array.isArray(input)) {
64
+ throw new TypeError("Runtime context segments must be an array");
65
+ }
66
+ if (input.length > MAX_ACCOUNTING_SEGMENTS) {
67
+ throw new RangeError(`Runtime context accounting supports at most ${MAX_ACCOUNTING_SEGMENTS} segments`);
68
+ }
69
+ const ids = new Set();
70
+ const segments = input.map((candidate) => {
71
+ if (!candidate || typeof candidate !== "object") {
72
+ throw new TypeError("Each runtime context segment must be an object");
73
+ }
74
+ const segment = copySegment(candidate);
75
+ if (ids.has(segment.id)) {
76
+ throw new TypeError(`Duplicate runtime context segment id: ${segment.id}`);
77
+ }
78
+ ids.add(segment.id);
79
+ return segment;
80
+ });
81
+ const categoryTotals = new Map();
82
+ let promptTokens = 0;
83
+ let toolSchemaTokens = 0;
84
+ let messageTokens = 0;
85
+ let attachmentTokens = 0;
86
+ let retrievalTokens = 0;
87
+ for (const segment of segments) {
88
+ const existing = categoryTotals.get(segment.category) ?? {
89
+ tokens: 0,
90
+ segments: 0,
91
+ };
92
+ existing.tokens = addCount(existing.tokens, segment.tokens, `category.${segment.category}.tokens`);
93
+ existing.segments += 1;
94
+ categoryTotals.set(segment.category, existing);
95
+ switch (segment.kind) {
96
+ case "prompt":
97
+ promptTokens = addCount(promptTokens, segment.tokens, "promptTokens");
98
+ break;
99
+ case "tool-schema":
100
+ toolSchemaTokens = addCount(toolSchemaTokens, segment.tokens, "toolSchemaTokens");
101
+ break;
102
+ case "message":
103
+ messageTokens = addCount(messageTokens, segment.tokens, "messageTokens");
104
+ break;
105
+ case "attachment":
106
+ attachmentTokens = addCount(attachmentTokens, segment.tokens, "attachmentTokens");
107
+ break;
108
+ case "retrieval":
109
+ retrievalTokens = addCount(retrievalTokens, segment.tokens, "retrievalTokens");
110
+ break;
111
+ }
112
+ }
113
+ const categories = [];
114
+ for (const category of RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_CATEGORIES) {
115
+ const totals = categoryTotals.get(category);
116
+ if (!totals)
117
+ continue;
118
+ categories.push(Object.freeze({
119
+ category,
120
+ tokens: totals.tokens,
121
+ segments: totals.segments,
122
+ }));
123
+ }
124
+ const totalTokens = [
125
+ promptTokens,
126
+ toolSchemaTokens,
127
+ messageTokens,
128
+ attachmentTokens,
129
+ retrievalTokens,
130
+ ].reduce((total, value) => addCount(total, value, "totalTokens"), 0);
131
+ return Object.freeze({
132
+ version: RUNTIME_CONTEXT_ACCOUNTING_VERSION,
133
+ segments: Object.freeze(segments),
134
+ categories: Object.freeze(categories),
135
+ totals: Object.freeze({
136
+ promptTokens,
137
+ toolSchemaTokens,
138
+ messageTokens,
139
+ attachmentTokens,
140
+ retrievalTokens,
141
+ totalTokens,
142
+ }),
143
+ });
144
+ }
145
+ //# sourceMappingURL=accounting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounting.js","sourceRoot":"","sources":["../../src/runtime-inspection/accounting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { RUNTIME_CONTEXT_ACCOUNTING_VERSION, RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_CATEGORIES, RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_KINDS, } from "./types.js";
2
+ export { createRuntimeContextAccounting, normalizeRuntimeContextAccountingSegmentCategory, } from "./accounting.js";
3
+ export type { RuntimeContextAccounting, RuntimeContextAccountingSegment, RuntimeContextAccountingSegmentCategory, RuntimeContextAccountingSegmentKind, RuntimeContextAccountingTotals, RuntimeContextCategoryAccounting, } from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime-inspection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,6CAA6C,EAC7C,wCAAwC,GACzC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,8BAA8B,EAC9B,gDAAgD,GACjD,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,wBAAwB,EACxB,+BAA+B,EAC/B,uCAAuC,EACvC,mCAAmC,EACnC,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { RUNTIME_CONTEXT_ACCOUNTING_VERSION, RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_CATEGORIES, RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_KINDS, } from "./types.js";
2
+ export { createRuntimeContextAccounting, normalizeRuntimeContextAccountingSegmentCategory, } from "./accounting.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime-inspection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,6CAA6C,EAC7C,wCAAwC,GACzC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,8BAA8B,EAC9B,gDAAgD,GACjD,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,40 @@
1
+ export declare const RUNTIME_CONTEXT_ACCOUNTING_VERSION: 1;
2
+ export declare const RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_CATEGORIES: readonly ["instructions", "memory", "brain", "skills", "tools", "workspace", "runtime", "conversation", "attachments", "retrieval", "other"];
3
+ export type RuntimeContextAccountingSegmentCategory = (typeof RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_CATEGORIES)[number];
4
+ export declare const RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_KINDS: readonly ["prompt", "tool-schema", "message", "attachment", "retrieval"];
5
+ export type RuntimeContextAccountingSegmentKind = (typeof RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_KINDS)[number];
6
+ /**
7
+ * Secret-free accounting metadata for one model-context contribution.
8
+ * Content is deliberately absent: inspectors receive size and provenance,
9
+ * never prompt text, credentials, messages, or retrieved documents.
10
+ */
11
+ export interface RuntimeContextAccountingSegment {
12
+ readonly id: string;
13
+ readonly label: string;
14
+ readonly category: RuntimeContextAccountingSegmentCategory;
15
+ readonly kind: RuntimeContextAccountingSegmentKind;
16
+ readonly tokens: number;
17
+ readonly characters?: number;
18
+ readonly items?: number;
19
+ readonly deferred?: boolean;
20
+ }
21
+ export interface RuntimeContextCategoryAccounting {
22
+ readonly category: RuntimeContextAccountingSegmentCategory;
23
+ readonly tokens: number;
24
+ readonly segments: number;
25
+ }
26
+ export interface RuntimeContextAccountingTotals {
27
+ readonly promptTokens: number;
28
+ readonly toolSchemaTokens: number;
29
+ readonly messageTokens: number;
30
+ readonly attachmentTokens: number;
31
+ readonly retrievalTokens: number;
32
+ readonly totalTokens: number;
33
+ }
34
+ export interface RuntimeContextAccounting {
35
+ readonly version: typeof RUNTIME_CONTEXT_ACCOUNTING_VERSION;
36
+ readonly segments: readonly RuntimeContextAccountingSegment[];
37
+ readonly categories: readonly RuntimeContextCategoryAccounting[];
38
+ readonly totals: RuntimeContextAccountingTotals;
39
+ }
40
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime-inspection/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,EAAG,CAAU,CAAC;AAE7D,eAAO,MAAM,6CAA6C,8IAYhD,CAAC;AAEX,MAAM,MAAM,uCAAuC,GACjD,CAAC,OAAO,6CAA6C,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,eAAO,MAAM,wCAAwC,0EAM3C,CAAC;AAEX,MAAM,MAAM,mCAAmC,GAC7C,CAAC,OAAO,wCAAwC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,uCAAuC,CAAC;IAC3D,QAAQ,CAAC,IAAI,EAAE,mCAAmC,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,uCAAuC,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,kCAAkC,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAE,SAAS,gCAAgC,EAAE,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;CACjD"}
@@ -0,0 +1,22 @@
1
+ export const RUNTIME_CONTEXT_ACCOUNTING_VERSION = 1;
2
+ export const RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_CATEGORIES = [
3
+ "instructions",
4
+ "memory",
5
+ "brain",
6
+ "skills",
7
+ "tools",
8
+ "workspace",
9
+ "runtime",
10
+ "conversation",
11
+ "attachments",
12
+ "retrieval",
13
+ "other",
14
+ ];
15
+ export const RUNTIME_CONTEXT_ACCOUNTING_SEGMENT_KINDS = [
16
+ "prompt",
17
+ "tool-schema",
18
+ "message",
19
+ "attachment",
20
+ "retrieval",
21
+ ];
22
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime-inspection/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAU,CAAC;AAE7D,MAAM,CAAC,MAAM,6CAA6C,GAAG;IAC3D,cAAc;IACd,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,WAAW;IACX,SAAS;IACT,cAAc;IACd,aAAa;IACb,WAAW;IACX,OAAO;CACC,CAAC;AAKX,MAAM,CAAC,MAAM,wCAAwC,GAAG;IACtD,QAAQ;IACR,aAAa;IACb,SAAS;IACT,YAAY;IACZ,WAAW;CACH,CAAC"}
@@ -32,6 +32,7 @@ export declare class TaskRunner {
32
32
  * The callback is typically the assessment pipeline (handleResult).
33
33
  */
34
34
  collectResults(onResult: (taskId: string, result: TaskResult) => Promise<void> | void): Promise<void>;
35
+ private emitGuardrailEvents;
35
36
  /**
36
37
  * Read the JSONL activity log for a killed run and produce a human-readable
37
38
  * diagnosis of what the agent was doing when it timed out.
@@ -1 +1 @@
1
- {"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAkBjE;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAsC3D;;GAEG;AACH,qBAAa,UAAU;IAeT,OAAO,CAAC,GAAG;IAdvB,OAAO,CAAC,WAAW,CAAqB;IACxC,gFAAgF;IAChF,OAAO,CAAC,YAAY,CAA6B;IACjD,iFAAiF;IACjF,OAAO,CAAC,UAAU,CAAkC;IACpD;;;;;;OAMG;IACH,OAAO,CAAC,aAAa,CAAsC;gBAEvC,GAAG,EAAE,mBAAmB;YAE9B,yBAAyB;IAgBvC;;;OAGG;IACG,cAAc,CAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACrE,OAAO,CAAC,IAAI,CAAC;IAmDhB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAyF7B;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsD1C;qFACiF;IAC3E,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyDhD;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IA8E7C,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIpC,4EAA4E;YAC9D,eAAe;IA+BvB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAmP7C,OAAO,CAAC,iBAAiB;CAK1B"}
1
+ {"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAqBjE;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAsC3D;;GAEG;AACH,qBAAa,UAAU;IAeT,OAAO,CAAC,GAAG;IAdvB,OAAO,CAAC,WAAW,CAAqB;IACxC,gFAAgF;IAChF,OAAO,CAAC,YAAY,CAA6B;IACjD,iFAAiF;IACjF,OAAO,CAAC,UAAU,CAAkC;IACpD;;;;;;OAMG;IACH,OAAO,CAAC,aAAa,CAAsC;gBAEvC,GAAG,EAAE,mBAAmB;YAE9B,yBAAyB;IAgBvC;;;OAGG;IACG,cAAc,CAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACrE,OAAO,CAAC,IAAI,CAAC;YAoDF,mBAAmB;IAqCjC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAyF7B;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsD1C;qFACiF;IAC3E,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyDhD;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IA8E7C,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIpC,4EAA4E;YAC9D,eAAe;IA+BvB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA4R7C,OAAO,CAAC,iBAAiB;CAK1B"}
@@ -4,7 +4,7 @@ import { agentMemoryScope } from "./memory-store.js";
4
4
  import { resolveExecutionMode } from "./execution-mode.js";
5
5
  import { resolveRuntimeSandboxOptions } from "./runtime-sandbox.js";
6
6
  import { resolveConfiguredModelSelection } from "./model-profiles.js";
7
- import { resolveRuntimeContext, } from "./runtime-context/index.js";
7
+ import { createRuntimePromptContextSegment, resolveRuntimeContext, } from "./runtime-context/index.js";
8
8
  import { createExecutionRouteResolvedEvent, resolveTaskExecutionRoute, } from "./execution-router.js";
9
9
  /**
10
10
  * Durable turns: max age of a resume checkpoint before orphan recovery
@@ -86,6 +86,7 @@ export class TaskRunner {
86
86
  async collectResults(onResult) {
87
87
  const terminalRuns = await this.ctx.runStore.getTerminalRuns();
88
88
  for (const run of terminalRuns) {
89
+ await this.emitGuardrailEvents(run);
89
90
  // Persist sessionId on the task before acknowledging the run.
90
91
  const sid = run.sessionId ?? run.activity.sessionId;
91
92
  if (sid) {
@@ -138,6 +139,43 @@ export class TaskRunner {
138
139
  this.staleWarned.delete(run.taskId);
139
140
  }
140
141
  }
142
+ async emitGuardrailEvents(run) {
143
+ const byId = new Map();
144
+ const sid = run.sessionId ?? run.activity.sessionId;
145
+ if (sid) {
146
+ try {
147
+ const entries = await this.ctx.logStore.getSessionEntries(sid);
148
+ for (const entry of entries) {
149
+ if (entry.event !== "transcript:guardrail_decision")
150
+ continue;
151
+ const data = entry.data;
152
+ const event = data?.event;
153
+ if (!event)
154
+ continue;
155
+ const id = event?.decision?.id;
156
+ if (data?.type === "guardrail_decision" && typeof id === "string") {
157
+ byId.set(id, event);
158
+ }
159
+ }
160
+ }
161
+ catch {
162
+ // Activity is the bounded fallback when transcript storage is down.
163
+ }
164
+ }
165
+ for (const event of run.activity.guardrailDecisions ?? []) {
166
+ const id = event?.decision?.id;
167
+ if (typeof id === "string" && !byId.has(id))
168
+ byId.set(id, event);
169
+ }
170
+ for (const event of byId.values()) {
171
+ this.ctx.emitter.emit("runtime:guardrail", {
172
+ runId: run.id,
173
+ taskId: run.taskId,
174
+ agentName: run.agentName,
175
+ event,
176
+ });
177
+ }
178
+ }
141
179
  /**
142
180
  * Read the JSONL activity log for a killed run and produce a human-readable
143
181
  * diagnosis of what the agent was doing when it timed out.
@@ -526,25 +564,45 @@ export class TaskRunner {
526
564
  throw new Error("Runtime context retrieval failed");
527
565
  }
528
566
  const executionRoute = await this.resolveTaskExecutionRoute(task, agent);
529
- // Inject context into task description for agent awareness.
530
- // Context is prepended using XML-like tags that the agent prompt can reference.
567
+ const contextTrust = this.ctx.config.settings.contextTrust === "enforce"
568
+ ? "enforce"
569
+ : "off";
570
+ // Build both representations during the opt-in window. Enforced runs keep
571
+ // metadata structural; disabled runs preserve the historical task prompt.
572
+ const promptContextSegments = [];
573
+ const legacyContextParts = [];
531
574
  const taskWithContext = {
532
575
  ...task,
533
576
  ...(executionRoute?.mode === "loop"
534
577
  ? { loop: executionRoute.loop }
535
578
  : {}),
536
579
  };
537
- const contextParts = [];
538
580
  // 1. Shared memory (persistent cross-session knowledge, visible to all agents)
539
581
  const sharedMemory = (await this.ctx.memoryStore?.get()) ?? "";
540
582
  if (sharedMemory) {
541
- contextParts.push(`<shared-memory>\n${sharedMemory}\n</shared-memory>`);
583
+ legacyContextParts.push(`<shared-memory>\n${sharedMemory}\n</shared-memory>`);
584
+ if (contextTrust === "enforce") {
585
+ promptContextSegments.push(createRuntimePromptContextSegment({
586
+ kind: "memory.shared",
587
+ sourceId: "project",
588
+ trust: "untrusted",
589
+ content: sharedMemory,
590
+ }));
591
+ }
542
592
  }
543
593
  // 1b. Agent-specific memory (private knowledge for the assigned agent)
544
594
  if (task.assignTo) {
545
595
  const agentMem = (await this.ctx.memoryStore?.get(agentMemoryScope(task.assignTo))) ?? "";
546
596
  if (agentMem) {
547
- contextParts.push(`<agent-memory agent="${task.assignTo}">\n${agentMem}\n</agent-memory>`);
597
+ legacyContextParts.push(`<agent-memory agent="${task.assignTo}">\n${agentMem}\n</agent-memory>`);
598
+ if (contextTrust === "enforce") {
599
+ promptContextSegments.push(createRuntimePromptContextSegment({
600
+ kind: "memory.agent",
601
+ sourceId: task.assignTo,
602
+ trust: "untrusted",
603
+ content: agentMem,
604
+ }));
605
+ }
548
606
  }
549
607
  }
550
608
  // 2. Mission context — if this task belongs to a mission, include the mission goal and sibling tasks
@@ -552,16 +610,24 @@ export class TaskRunner {
552
610
  try {
553
611
  // Resolve mission via direct ID (preferred) or group name (legacy fallback)
554
612
  const mission = await resolveMissionForTask(resolveMissionStore(this.ctx), task);
555
- const missionParts = [];
613
+ const legacyMissionParts = [];
556
614
  // Original user prompt that generated this mission (the "why")
557
615
  if (mission?.prompt) {
558
- missionParts.push(`Mission goal: ${mission.prompt}`);
616
+ legacyMissionParts.push(`Mission goal: ${mission.prompt}`);
617
+ if (contextTrust === "enforce") {
618
+ promptContextSegments.push(createRuntimePromptContextSegment({
619
+ kind: "mission.goal",
620
+ sourceId: mission.id,
621
+ trust: "user",
622
+ content: mission.prompt,
623
+ }));
624
+ }
559
625
  }
560
626
  // Sibling tasks — just titles and statuses for awareness, not full descriptions
561
627
  const allTasks = await this.ctx.taskStore.listTasks();
562
628
  const siblings = allTasks.filter(t => t.group === task.group && t.id !== task.id);
563
629
  if (siblings.length > 0) {
564
- missionParts.push(`Other tasks in this mission:`);
630
+ const missionParts = [`Other tasks in this mission:`];
565
631
  for (const s of siblings) {
566
632
  const marker = s.status === "done" ? "[done]"
567
633
  : s.status === "in_progress" ? "[in progress]"
@@ -569,16 +635,28 @@ export class TaskRunner {
569
635
  : "[pending]";
570
636
  missionParts.push(` ${marker} "${s.title}" → ${s.assignTo}`);
571
637
  }
638
+ legacyMissionParts.push(...missionParts);
639
+ if (contextTrust === "enforce") {
640
+ promptContextSegments.push(createRuntimePromptContextSegment({
641
+ kind: "mission.status",
642
+ sourceId: mission?.id ?? task.group,
643
+ trust: "untrusted",
644
+ content: missionParts.join("\n"),
645
+ }));
646
+ }
572
647
  }
573
- if (missionParts.length > 0) {
574
- contextParts.push(`<mission-context>\n${missionParts.join("\n")}\n</mission-context>`);
648
+ if (legacyMissionParts.length > 0) {
649
+ legacyContextParts.push(`<mission-context>\n${legacyMissionParts.join("\n")}\n</mission-context>`);
575
650
  }
576
651
  }
577
652
  catch { /* best effort — mission may have been deleted */ }
578
653
  }
579
- if (contextParts.length > 0) {
580
- taskWithContext.description = contextParts.join("\n\n") + "\n\n" + task.description;
581
- }
654
+ const taskForRun = contextTrust === "enforce" || legacyContextParts.length === 0
655
+ ? taskWithContext
656
+ : {
657
+ ...taskWithContext,
658
+ description: `${legacyContextParts.join("\n\n")}\n\n${task.description}`,
659
+ };
582
660
  // Durable turns: consume (one-shot) a checkpoint harvested by orphan
583
661
  // recovery — the runner resumes the conversation at turn + 1 instead
584
662
  // of redoing completed work. Absent checkpoint = spawn from zero.
@@ -601,10 +679,14 @@ export class TaskRunner {
601
679
  taskId: task.id,
602
680
  executionMode,
603
681
  sandbox,
682
+ ...(contextTrust === "enforce"
683
+ ? { contextTrust, promptContextSegments }
684
+ : {}),
685
+ guardrails: this.ctx.config.settings.guardrails,
604
686
  runtimeContext,
605
687
  executionRoute,
606
688
  agent,
607
- task: taskWithContext,
689
+ task: taskForRun,
608
690
  polpoDir: this.ctx.polpoDir,
609
691
  cwd: this.ctx.agentWorkDir,
610
692
  outputDir,