pi-harness-runtime 1.1.150 → 1.1.152

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 (158) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/harness/key-loader.ts +84 -0
  3. package/harness/langchain/agents.ts +65 -15
  4. package/harness/langchain/daemon.ts +58 -30
  5. package/harness/langchain/graph.ts +55 -7
  6. package/harness/langchain/jev-logger.ts +274 -0
  7. package/harness/langchain/run.ts +64 -161
  8. package/harness/langchain/surge.test.ts +42 -0
  9. package/harness/langchain/surge.ts +22 -1
  10. package/index.ts +24 -0
  11. package/package.json +1 -1
  12. package/packages/a2a-adapter/package.json +1 -1
  13. package/packages/agent-policy/dist/extension.d.ts +19 -0
  14. package/packages/agent-policy/dist/extension.d.ts.map +1 -0
  15. package/packages/agent-policy/dist/extension.js +322 -0
  16. package/packages/agent-policy/dist/extension.js.map +1 -0
  17. package/packages/agent-policy/dist/index.d.ts +25 -0
  18. package/packages/agent-policy/dist/index.d.ts.map +1 -0
  19. package/packages/agent-policy/dist/index.js +27 -0
  20. package/packages/agent-policy/dist/index.js.map +1 -0
  21. package/packages/agent-policy/dist/policy-loader.d.ts +90 -0
  22. package/packages/agent-policy/dist/policy-loader.d.ts.map +1 -0
  23. package/packages/agent-policy/dist/policy-loader.js +331 -0
  24. package/packages/agent-policy/dist/policy-loader.js.map +1 -0
  25. package/packages/agent-policy/dist/policy-renderer.d.ts +42 -0
  26. package/packages/agent-policy/dist/policy-renderer.d.ts.map +1 -0
  27. package/packages/agent-policy/dist/policy-renderer.js +295 -0
  28. package/packages/agent-policy/dist/policy-renderer.js.map +1 -0
  29. package/packages/agent-policy/dist/policy-store.d.ts +99 -0
  30. package/packages/agent-policy/dist/policy-store.d.ts.map +1 -0
  31. package/packages/agent-policy/dist/policy-store.js +244 -0
  32. package/packages/agent-policy/dist/policy-store.js.map +1 -0
  33. package/packages/agent-policy/dist/types.d.ts +237 -0
  34. package/packages/agent-policy/dist/types.d.ts.map +1 -0
  35. package/packages/agent-policy/dist/types.js +130 -0
  36. package/packages/agent-policy/dist/types.js.map +1 -0
  37. package/packages/agent-policy/package.json +45 -0
  38. package/packages/agent-policy/src/extension.ts +413 -0
  39. package/packages/agent-policy/src/index.ts +52 -0
  40. package/packages/agent-policy/src/policy-loader.ts +398 -0
  41. package/packages/agent-policy/src/policy-renderer.ts +362 -0
  42. package/packages/agent-policy/src/policy-store.ts +319 -0
  43. package/packages/agent-policy/src/types.ts +385 -0
  44. package/packages/agent-policy/test/policy.test.ts +383 -0
  45. package/packages/architecture-generator/package.json +1 -1
  46. package/packages/auth/package.json +1 -1
  47. package/packages/autonomous-refactor/package.json +1 -1
  48. package/packages/autonomous-runtime/package.json +1 -1
  49. package/packages/cache-strategy/package.json +1 -1
  50. package/packages/capability-registry/package.json +1 -1
  51. package/packages/checkpoint/package.json +1 -1
  52. package/packages/cli-plugin-sdk/package.json +1 -1
  53. package/packages/clipboard/package.json +1 -1
  54. package/packages/clipboard-plugin/package.json +1 -1
  55. package/packages/code-generation/package.json +1 -1
  56. package/packages/code-review/package.json +1 -1
  57. package/packages/codex-adapter/package.json +1 -1
  58. package/packages/codex-watcher/dist/src/parser.d.ts.map +1 -1
  59. package/packages/codex-watcher/dist/src/parser.js +35 -0
  60. package/packages/codex-watcher/dist/src/parser.js.map +1 -1
  61. package/packages/codex-watcher/package.json +1 -1
  62. package/packages/codex-watcher/src/parser.ts +41 -0
  63. package/packages/config-capture/package.json +1 -1
  64. package/packages/context-compiler/package.json +1 -1
  65. package/packages/context-discovery/package.json +1 -1
  66. package/packages/context-manager/package.json +1 -1
  67. package/packages/cookie-sanitizer/package.json +1 -1
  68. package/packages/cost-optimizer/package.json +1 -1
  69. package/packages/dependency-analyzer/package.json +1 -1
  70. package/packages/django-plugin/package.json +1 -1
  71. package/packages/doc-generator/package.json +1 -1
  72. package/packages/evaluation-engine/package.json +1 -1
  73. package/packages/evaluation-runner/package.json +1 -1
  74. package/packages/event-bus/package.json +1 -1
  75. package/packages/event-store/package.json +1 -1
  76. package/packages/experience-replay/package.json +1 -1
  77. package/packages/feedback-collector/package.json +1 -1
  78. package/packages/file-copy-helper/package.json +1 -1
  79. package/packages/framework-detector/package.json +1 -1
  80. package/packages/framework-plugin-sdk/package.json +1 -1
  81. package/packages/frappe-plugin/package.json +1 -1
  82. package/packages/generic-web-plugin/package.json +1 -1
  83. package/packages/health-monitor/package.json +1 -1
  84. package/packages/intent-analyzer/package.json +1 -1
  85. package/packages/jev-judge/package.json +1 -1
  86. package/packages/knowledge-graph/package.json +1 -1
  87. package/packages/knowledge-retrieval/package.json +1 -1
  88. package/packages/laravel-plugin/package.json +1 -1
  89. package/packages/learning-engine/package.json +1 -1
  90. package/packages/mcp-adapter/package.json +1 -1
  91. package/packages/memory-engine/package.json +1 -1
  92. package/packages/milestone-manager/package.json +1 -1
  93. package/packages/model-registry/package.json +1 -1
  94. package/packages/nextjs-plugin/package.json +1 -1
  95. package/packages/notification/dist/adapters/telegram-adapter.d.ts +5 -0
  96. package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
  97. package/packages/notification/dist/adapters/telegram-adapter.js +54 -0
  98. package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
  99. package/packages/notification/dist/notification-center.d.ts +13 -0
  100. package/packages/notification/dist/notification-center.d.ts.map +1 -1
  101. package/packages/notification/dist/notification-center.js +36 -0
  102. package/packages/notification/dist/notification-center.js.map +1 -1
  103. package/packages/notification/package.json +1 -1
  104. package/packages/notification/src/adapters/telegram-adapter.ts +71 -0
  105. package/packages/notification/src/notification-center.ts +53 -0
  106. package/packages/observability/package.json +1 -1
  107. package/packages/okf-indexer/package.json +1 -1
  108. package/packages/paperclip-integration/package.json +1 -1
  109. package/packages/performance-optimizer/package.json +1 -1
  110. package/packages/privilege-broker/package.json +1 -1
  111. package/packages/project-analyzer/package.json +1 -1
  112. package/packages/project-bootstrap/package.json +1 -1
  113. package/packages/projection-engine/package.json +1 -1
  114. package/packages/prompt-compiler/package.json +1 -1
  115. package/packages/prompt-versioning/package.json +1 -1
  116. package/packages/provider-adapter-sdk/package.json +1 -1
  117. package/packages/provider-router/package.json +1 -1
  118. package/packages/provider-selector/package.json +1 -1
  119. package/packages/providers/package.json +1 -1
  120. package/packages/qdrant-skills/package.json +1 -1
  121. package/packages/quota-manager/package.json +1 -1
  122. package/packages/rate-limiter/package.json +1 -1
  123. package/packages/react-vite-plugin/package.json +1 -1
  124. package/packages/release-manager/package.json +1 -1
  125. package/packages/requirement-compiler/package.json +1 -1
  126. package/packages/runtime/package.json +1 -1
  127. package/packages/scheduler/package.json +1 -1
  128. package/packages/scheduler-adapter/package.json +1 -1
  129. package/packages/session/package.json +1 -1
  130. package/packages/session-api/package.json +1 -1
  131. package/packages/session-export/package.json +1 -1
  132. package/packages/shared-context/package.json +1 -1
  133. package/packages/skill-mcp-client/package.json +1 -1
  134. package/packages/skill-registry/package.json +1 -1
  135. package/packages/skills/package.json +1 -1
  136. package/packages/sprint-planner/package.json +1 -1
  137. package/packages/subscription-engine/package.json +1 -1
  138. package/packages/task-compiler/package.json +1 -1
  139. package/packages/tencentdb-memory/package.json +1 -1
  140. package/packages/tencentdb-sync/package.json +1 -1
  141. package/packages/test-data-generator/package.json +1 -1
  142. package/packages/test-generator/package.json +1 -1
  143. package/packages/todo-bd-sync/package.json +1 -1
  144. package/packages/token-estimation/package.json +1 -1
  145. package/packages/token-optimizer/package.json +1 -1
  146. package/packages/trajectory/package.json +1 -1
  147. package/packages/tui/package.json +1 -1
  148. package/packages/types/package.json +1 -1
  149. package/packages/workflow-events/package.json +1 -1
  150. package/packages/workspace-scanner/package.json +1 -1
  151. package/packages/worktree/package.json +1 -1
  152. package/packages/write-review/package.json +1 -1
  153. package/proactive-compact.ts +2 -2
  154. package/scripts/debug-codex-integration.ts +203 -0
  155. package/scripts/sync-keys-from-pi.ts +188 -0
  156. package/scripts/test-codex-session.ts +23 -0
  157. package/scripts/test-openai.ts +14 -0
  158. package/scripts/test-telegram.ts +34 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-harness-runtime",
3
- "version": "1.1.150",
3
+ "version": "1.1.152",
4
4
  "description": "[BETA] Codex-style /usage status + autonomous coding harness for pi. Not production ready — expect breaking changes.",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/a2a-adapter",
3
- "version": "1.1.150",
3
+ "version": "1.1.152",
4
4
  "type": "module",
5
5
  "description": "Google Agent-to-Agent (A2A) protocol adapter for pi-harness",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Agent Policy Extension
3
+ *
4
+ * Registers the policy runtime with Pi's event system:
5
+ * - before_agent_start: inject system contract
6
+ * - tool_call: gate mutations until policy received
7
+ * - harness_rules tool: retrieve and acknowledge rules
8
+ */
9
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
10
+ import type { AgentPolicyConfig } from "./types.js";
11
+ /**
12
+ * Register the agent policy runtime with Pi.
13
+ */
14
+ export declare function registerAgentPolicy(pi: ExtensionAPI, config: AgentPolicyConfig): void;
15
+ /**
16
+ * Register with default configuration pointing to harness AGENTS.md.
17
+ */
18
+ export declare function registerDefault(pi: ExtensionAPI): void;
19
+ //# sourceMappingURL=extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAapB;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,iBAAiB,GACxB,IAAI,CA8SN;AA8DD;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAQtD"}
@@ -0,0 +1,322 @@
1
+ /**
2
+ * Agent Policy Extension
3
+ *
4
+ * Registers the policy runtime with Pi's event system:
5
+ * - before_agent_start: inject system contract
6
+ * - tool_call: gate mutations until policy received
7
+ * - harness_rules tool: retrieve and acknowledge rules
8
+ */
9
+ import { PolicyLoader } from "./policy-loader.js";
10
+ import { getPolicyStore } from "./policy-store.js";
11
+ import { renderSystemContract, renderFullRules, } from "./policy-renderer.js";
12
+ import { classifyToolCall } from "./types.js";
13
+ // ---------------------------------------------------------------------------
14
+ // Extension Registration
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * Register the agent policy runtime with Pi.
18
+ */
19
+ export function registerAgentPolicy(pi, config) {
20
+ const loader = new PolicyLoader({
21
+ harnessRulesPath: config.harnessRulesPath,
22
+ additionalRulesPaths: config.additionalRulesPaths,
23
+ });
24
+ const store = getPolicyStore();
25
+ const toolClassifier = config.toolClassifier ?? classifyToolCall;
26
+ // Track if pi-lens is available
27
+ let piLensAvailable = false;
28
+ // Check for pi-lens availability on session start
29
+ pi.on("session_start", async (event) => {
30
+ // pi-lens registers its own tools, so we can check for them
31
+ const availableTools = event.availableTools ?? [];
32
+ piLensAvailable = availableTools.includes("lens_diagnostics");
33
+ });
34
+ // ---------------------------------------------------------------------------
35
+ // before_agent_start: Inject system contract
36
+ // ---------------------------------------------------------------------------
37
+ pi.on("before_agent_start", async (event, ctx) => {
38
+ const cwd = getCwdFromContext(ctx);
39
+ try {
40
+ const manifest = await loader.load(cwd);
41
+ // Record delivery in store
42
+ const sessionId = getSessionIdFromCtx(ctx);
43
+ const receipt = store.noteDelivered(sessionId, manifest, "system_prompt");
44
+ // Render and inject contract
45
+ const contract = renderSystemContract(manifest);
46
+ // Build augmented system prompt
47
+ const augmentedPrompt = event.systemPrompt + "\n\n" + contract;
48
+ // Log for debugging
49
+ console.log(`[agent-policy] Delivered policy ${manifest.revision} to session ${receipt.sessionId}`);
50
+ return { systemPrompt: augmentedPrompt };
51
+ }
52
+ catch (err) {
53
+ const errorMessage = err instanceof Error ? err.message : String(err);
54
+ console.error(`[agent-policy] Failed to load policy: ${errorMessage}`);
55
+ // Return minimal contract on failure - don't block startup
56
+ const fallbackContract = `
57
+ PI-HARNESS POLICY coverage=degraded
58
+
59
+ WARNING: Policy loading failed. Please report this to your administrator.
60
+ Use harness_rules to check policy status.
61
+ `.trim();
62
+ return { systemPrompt: event.systemPrompt + "\n\n" + fallbackContract };
63
+ }
64
+ });
65
+ // ---------------------------------------------------------------------------
66
+ // tool_call: Gate mutations until policy received
67
+ // ---------------------------------------------------------------------------
68
+ pi.on("tool_call", async (event, ctx) => {
69
+ const toolName = event.toolName;
70
+ const input = event.input;
71
+ const capability = toolClassifier(toolName, input);
72
+ // Skip non-mutating calls
73
+ if (!capability.mutatesProject && !capability.releasesProject && !capability.isChildDelegation) {
74
+ return {};
75
+ }
76
+ const cwd = getCwdFromContext(ctx);
77
+ const sessionId = getSessionIdFromCtx(ctx);
78
+ const targetPath = capability.affectedPaths?.[0];
79
+ try {
80
+ const manifest = await loader.loadForTarget(cwd, targetPath);
81
+ const receipt = store.getReceipt(sessionId, manifest.projectRoot);
82
+ // Check if current revision is covered
83
+ if (!receipt || receipt.revision !== manifest.revision) {
84
+ const blockReason = receipt
85
+ ? `Policy revision changed (expected ${manifest.revision}, received ${receipt.revision})`
86
+ : `Policy revision ${manifest.revision} not yet delivered`;
87
+ console.log(`[agent-policy] Blocked ${toolName}: ${blockReason}`);
88
+ const reason = `[POLICY REQUIRED] ${blockReason}\n\n` +
89
+ `Call harness_rules action=read to load the current rules, then retry this operation.\n` +
90
+ `Or call harness_rules action=manifest to see the current policy status.`;
91
+ return { block: true, reason };
92
+ }
93
+ // Optional: Check git guard
94
+ if (config.gitGuardEnabled && capability.releasesProject) {
95
+ // Git operations are gated by pi-lens Git guard if available
96
+ const blockingFindings = await checkForBlockingFindings(ctx, piLensAvailable);
97
+ if (blockingFindings) {
98
+ return {
99
+ block: true,
100
+ reason: `[GIT GUARD] Blocking git operation until findings are resolved.\n\n${blockingFindings}`,
101
+ };
102
+ }
103
+ }
104
+ // Policy satisfied, allow the call
105
+ return {};
106
+ }
107
+ catch (err) {
108
+ const errorMessage = err instanceof Error ? err.message : String(err);
109
+ console.error(`[agent-policy] Policy check failed: ${errorMessage}`);
110
+ // On error, fail open for the command but log the issue
111
+ // This matches pi-lens's total handler guard behavior
112
+ return {};
113
+ }
114
+ });
115
+ // ---------------------------------------------------------------------------
116
+ // harness_rules tool implementation
117
+ // ---------------------------------------------------------------------------
118
+ pi.registerTool({
119
+ name: "harness_rules",
120
+ label: "Harness Rules",
121
+ description: [
122
+ "Retrieve and acknowledge harness policy rules.",
123
+ "Actions:",
124
+ " - manifest: Show current policy status (revision, coverage, sources)",
125
+ " - read: Get full rule text (optionally filtered by source or section)",
126
+ " - acknowledge: Confirm receipt of a specific revision",
127
+ ].join("\n"),
128
+ parameters: {
129
+ type: "object",
130
+ properties: {
131
+ action: {
132
+ type: "string",
133
+ enum: ["manifest", "read", "acknowledge"],
134
+ description: "Action to perform",
135
+ },
136
+ source: {
137
+ type: "string",
138
+ description: "Source path filter (partial match) for read action",
139
+ },
140
+ section: {
141
+ type: "string",
142
+ description: "Section title filter for read action",
143
+ },
144
+ revision: {
145
+ type: "string",
146
+ description: "Revision to acknowledge",
147
+ },
148
+ },
149
+ required: ["action"],
150
+ },
151
+ async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
152
+ const cwd = ctx.cwd;
153
+ const sessionId = getSessionIdFromCtx(ctx);
154
+ try {
155
+ const input = params;
156
+ switch (input.action) {
157
+ case "manifest": {
158
+ const manifest = await loader.load(cwd);
159
+ return {
160
+ content: [{
161
+ type: "text",
162
+ text: JSON.stringify({ manifest }, null, 2),
163
+ }],
164
+ details: { manifest },
165
+ };
166
+ }
167
+ case "read": {
168
+ const manifest = await loader.load(cwd);
169
+ const result = renderFullRules(manifest, {
170
+ source: input.source,
171
+ section: input.section,
172
+ });
173
+ // Record delivery if not already recorded
174
+ const existingReceipt = store.getReceipt(sessionId, manifest.projectRoot);
175
+ if (!existingReceipt || existingReceipt.revision !== manifest.revision) {
176
+ store.noteDelivered(sessionId, manifest, "tool", result.sections?.map(s => s.id) ?? ["*"]);
177
+ }
178
+ // Format output as readable text
179
+ let output = `Harness Policy Rules (revision: ${manifest.revision})\n`;
180
+ output += "=".repeat(50) + "\n\n";
181
+ if (result.sections) {
182
+ for (const section of result.sections) {
183
+ output += `[${section.priority.toUpperCase()}] ${section.title}\n`;
184
+ output += `Source: ${section.source}\n`;
185
+ if (section.truncated) {
186
+ output += "(truncated)\n";
187
+ }
188
+ output += "\n" + section.content + "\n\n";
189
+ }
190
+ }
191
+ return {
192
+ content: [{
193
+ type: "text",
194
+ text: output,
195
+ }],
196
+ details: { sections: result.sections },
197
+ };
198
+ }
199
+ case "acknowledge": {
200
+ const manifest = await loader.load(cwd);
201
+ // Reject acknowledgement of wrong revision
202
+ if (input.revision && input.revision !== manifest.revision) {
203
+ return {
204
+ content: [{
205
+ type: "text",
206
+ text: `ERROR: Cannot acknowledge revision ${input.revision}: current revision is ${manifest.revision}`,
207
+ }],
208
+ isError: true,
209
+ details: { error: "revision_mismatch" },
210
+ };
211
+ }
212
+ // Record acknowledgement
213
+ const receipt = store.noteDelivered(sessionId, manifest, "tool", ["*"] // Full content acknowledged
214
+ );
215
+ return {
216
+ content: [{
217
+ type: "text",
218
+ text: `Policy acknowledged.\nRevision: ${receipt.revision}\nDelivered: ${new Date(receipt.deliveredAt).toISOString()}`,
219
+ }],
220
+ details: { receipt },
221
+ };
222
+ }
223
+ default: {
224
+ const unknownAction = input.action;
225
+ return {
226
+ content: [{
227
+ type: "text",
228
+ text: `ERROR: Unknown action: ${unknownAction}`,
229
+ }],
230
+ isError: true,
231
+ details: { error: "unknown_action" },
232
+ };
233
+ }
234
+ }
235
+ }
236
+ catch (err) {
237
+ const errorMessage = err instanceof Error ? err.message : String(err);
238
+ console.error(`[agent-policy] harness_rules failed: ${errorMessage}`);
239
+ return {
240
+ content: [{
241
+ type: "text",
242
+ text: `Policy operation failed: ${errorMessage}`,
243
+ }],
244
+ isError: true,
245
+ details: { error: errorMessage },
246
+ };
247
+ }
248
+ },
249
+ });
250
+ // ---------------------------------------------------------------------------
251
+ // session_start: Initialize session tracking
252
+ // ---------------------------------------------------------------------------
253
+ pi.on("session_start", (_event, ctx) => {
254
+ const sessionId = getSessionIdFromCtx(ctx);
255
+ const cwd = getCwdFromContext(ctx);
256
+ console.log(`[agent-policy] Session started: ${sessionId} in ${cwd}`);
257
+ });
258
+ // ---------------------------------------------------------------------------
259
+ // agent_end: Cleanup
260
+ // ---------------------------------------------------------------------------
261
+ pi.on("agent_end", () => {
262
+ console.log("[agent-policy] Agent ended");
263
+ });
264
+ console.log("[agent-policy] Registered agent policy runtime");
265
+ }
266
+ // ---------------------------------------------------------------------------
267
+ // Helpers
268
+ // ---------------------------------------------------------------------------
269
+ /**
270
+ * Extract session ID from context.
271
+ */
272
+ function getSessionIdFromCtx(ctx) {
273
+ const ctxObj = ctx;
274
+ if (typeof ctxObj?.sessionId === "string") {
275
+ return ctxObj.sessionId;
276
+ }
277
+ if (typeof ctxObj?.id === "string") {
278
+ return ctxObj.id;
279
+ }
280
+ // Fallback to a generated ID
281
+ return `session-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
282
+ }
283
+ /**
284
+ * Extract working directory from context.
285
+ */
286
+ function getCwdFromContext(ctx) {
287
+ const ctxObj = ctx;
288
+ if (typeof ctxObj?.cwd === "string") {
289
+ return ctxObj.cwd;
290
+ }
291
+ if (typeof ctxObj?.workingDirectory === "string") {
292
+ return ctxObj.workingDirectory;
293
+ }
294
+ // Fallback to process cwd
295
+ return process.cwd();
296
+ }
297
+ /**
298
+ * Check for blocking findings (placeholder for pi-lens integration).
299
+ */
300
+ async function checkForBlockingFindings(_ctx, piLensAvailable) {
301
+ if (!piLensAvailable) {
302
+ return null; // No blocking findings without pi-lens
303
+ }
304
+ // TODO: Query pi-lens for fresh blocking findings
305
+ // This would integrate with pi-lens's finding store
306
+ return null;
307
+ }
308
+ // ---------------------------------------------------------------------------
309
+ // Convenience Export
310
+ // ---------------------------------------------------------------------------
311
+ /**
312
+ * Register with default configuration pointing to harness AGENTS.md.
313
+ */
314
+ export function registerDefault(pi) {
315
+ const harnessRulesPath = new URL("../../../AGENTS.md", import.meta.url);
316
+ registerAgentPolicy(pi, {
317
+ harnessRulesPath,
318
+ requireReceiptBeforeMutation: true,
319
+ lspMode: "pi-lens",
320
+ });
321
+ }
322
+ //# sourceMappingURL=extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Agent Policy Package
3
+ *
4
+ * Provides mandatory policy delivery and mutation gating for pi-harness.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { registerAgentPolicy } from "@pi/agent-policy";
9
+ *
10
+ * export default function (pi: ExtensionAPI) {
11
+ * registerAgentPolicy(pi, {
12
+ * harnessRulesPath: new URL("./AGENTS.md", import.meta.url),
13
+ * requireReceiptBeforeMutation: true,
14
+ * lspMode: "pi-lens",
15
+ * });
16
+ * }
17
+ * ```
18
+ */
19
+ export type { AgentPolicyConfig, HarnessRulesInput, HarnessRulesOutput, MinimaxFindingEnvelope, PolicyFinding, PolicyManifest, PolicyReceipt, PolicySection, PolicySource, ToolCallCapability, HarnessAgentVerdict, } from "./types.js";
20
+ export { PolicyLoader, createPolicyLoader } from "./policy-loader.js";
21
+ export { PolicyStore, getPolicyStore, resetPolicyStore } from "./policy-store.js";
22
+ export { renderSystemContract, renderFullRules, renderManifestSummary, renderFindingEnvelope, parseSections, createCleanEnvelope, createDegradedEnvelope, } from "./policy-renderer.js";
23
+ export { registerAgentPolicy, registerDefault } from "./extension.js";
24
+ export { classifyToolCall } from "./types.js";
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Agent Policy Package
3
+ *
4
+ * Provides mandatory policy delivery and mutation gating for pi-harness.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { registerAgentPolicy } from "@pi/agent-policy";
9
+ *
10
+ * export default function (pi: ExtensionAPI) {
11
+ * registerAgentPolicy(pi, {
12
+ * harnessRulesPath: new URL("./AGENTS.md", import.meta.url),
13
+ * requireReceiptBeforeMutation: true,
14
+ * lspMode: "pi-lens",
15
+ * });
16
+ * }
17
+ * ```
18
+ */
19
+ // Policy Components
20
+ export { PolicyLoader, createPolicyLoader } from "./policy-loader.js";
21
+ export { PolicyStore, getPolicyStore, resetPolicyStore } from "./policy-store.js";
22
+ export { renderSystemContract, renderFullRules, renderManifestSummary, renderFindingEnvelope, parseSections, createCleanEnvelope, createDegradedEnvelope, } from "./policy-renderer.js";
23
+ // Extension Registration
24
+ export { registerAgentPolicy, registerDefault } from "./extension.js";
25
+ // Tool Classifier
26
+ export { classifyToolCall } from "./types.js";
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAiBH,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,yBAAyB;AACzB,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtE,kBAAkB;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * PolicyLoader - Loads and hashes harness and scoped project rules.
3
+ *
4
+ * Responsibilities:
5
+ * - Load the immutable harness policy shipped with the package
6
+ * - Walk from project root toward target file collecting scoped AGENTS.md
7
+ * - Normalize newlines and paths, then hash the ordered mandatory content
8
+ * - Build a PolicyManifest with source paths, scope, priority, and hashes
9
+ */
10
+ import type { PolicyManifest } from "./types.js";
11
+ /**
12
+ * Policy loader configuration.
13
+ */
14
+ export interface PolicyLoaderConfig {
15
+ /** Path to the harness-owned AGENTS.md */
16
+ harnessRulesPath: URL;
17
+ /** Optional additional harness rule files */
18
+ additionalRulesPaths?: URL[];
19
+ }
20
+ /**
21
+ * Loads and processes agent policies from harness and project sources.
22
+ */
23
+ export declare class PolicyLoader {
24
+ private harnessRulesPath;
25
+ private additionalRulesPaths;
26
+ private cache;
27
+ private readonly CACHE_TTL_MS;
28
+ constructor(config: PolicyLoaderConfig);
29
+ /**
30
+ * Load policy for a given project root.
31
+ */
32
+ load(projectRoot: string): Promise<PolicyManifest>;
33
+ /**
34
+ * Load policy for a specific target file (considers scoped rules).
35
+ */
36
+ loadForTarget(projectRoot: string, targetPath?: string): Promise<PolicyManifest>;
37
+ /**
38
+ * Invalidate cache for a project root.
39
+ */
40
+ invalidateCache(projectRoot?: string): void;
41
+ /**
42
+ * Build manifest for a project root.
43
+ */
44
+ private buildManifest;
45
+ /**
46
+ * Load harness-owned rule files.
47
+ */
48
+ private loadHarnessRules;
49
+ /**
50
+ * Load project-owned rule files, walking from root toward target.
51
+ */
52
+ private loadProjectRules;
53
+ /**
54
+ * Evaluate trust level for a project.
55
+ */
56
+ private evaluateTrust;
57
+ /**
58
+ * Infer the scope from a relative path.
59
+ */
60
+ private inferScope;
61
+ /**
62
+ * Normalize content for consistent hashing.
63
+ */
64
+ private normalizeContent;
65
+ /**
66
+ * Compute SHA-256 hash of content.
67
+ */
68
+ private hashContent;
69
+ /**
70
+ * Compute combined revision from sources.
71
+ */
72
+ private computeRevision;
73
+ /**
74
+ * Determine coverage based on loaded sources and errors.
75
+ */
76
+ private determineCoverage;
77
+ /**
78
+ * Generate cache key for a project root.
79
+ */
80
+ private getCacheKey;
81
+ /**
82
+ * Read the raw content of a source file.
83
+ */
84
+ readSourceContent(path: string): string | null;
85
+ }
86
+ /**
87
+ * Create a PolicyLoader with the standard harness configuration.
88
+ */
89
+ export declare function createPolicyLoader(): PolicyLoader;
90
+ //# sourceMappingURL=policy-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-loader.d.ts","sourceRoot":"","sources":["../src/policy-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAgC/D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,gBAAgB,EAAE,GAAG,CAAC;IACtB,6CAA6C;IAC7C,oBAAoB,CAAC,EAAE,GAAG,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,oBAAoB,CAAQ;IACpC,OAAO,CAAC,KAAK,CAA0E;IACvF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAErC,YAAY,MAAM,EAAE,kBAAkB,EAGrC;IAED;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWvD;IAED;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAuBrF;IAED;;OAEG;IACH,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAM1C;IAED;;OAEG;YACW,aAAa;IAsC3B;;OAEG;YACW,gBAAgB;IAkD9B;;OAEG;YACW,gBAAgB;IA8C9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS7C;CACF;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAOjD"}