pi-harness-runtime 1.1.148 → 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.
- package/CHANGELOG.md +7 -0
- package/harness/key-loader.ts +84 -0
- package/harness/langchain/agents.ts +65 -15
- package/harness/langchain/daemon.ts +58 -30
- package/harness/langchain/graph.ts +55 -7
- package/harness/langchain/jev-logger.ts +274 -0
- package/harness/langchain/run.ts +64 -161
- package/harness/langchain/surge.test.ts +42 -0
- package/harness/langchain/surge.ts +22 -1
- package/index.ts +65 -26
- package/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/agent-policy/dist/extension.d.ts +19 -0
- package/packages/agent-policy/dist/extension.d.ts.map +1 -0
- package/packages/agent-policy/dist/extension.js +322 -0
- package/packages/agent-policy/dist/extension.js.map +1 -0
- package/packages/agent-policy/dist/index.d.ts +25 -0
- package/packages/agent-policy/dist/index.d.ts.map +1 -0
- package/packages/agent-policy/dist/index.js +27 -0
- package/packages/agent-policy/dist/index.js.map +1 -0
- package/packages/agent-policy/dist/policy-loader.d.ts +90 -0
- package/packages/agent-policy/dist/policy-loader.d.ts.map +1 -0
- package/packages/agent-policy/dist/policy-loader.js +331 -0
- package/packages/agent-policy/dist/policy-loader.js.map +1 -0
- package/packages/agent-policy/dist/policy-renderer.d.ts +42 -0
- package/packages/agent-policy/dist/policy-renderer.d.ts.map +1 -0
- package/packages/agent-policy/dist/policy-renderer.js +295 -0
- package/packages/agent-policy/dist/policy-renderer.js.map +1 -0
- package/packages/agent-policy/dist/policy-store.d.ts +99 -0
- package/packages/agent-policy/dist/policy-store.d.ts.map +1 -0
- package/packages/agent-policy/dist/policy-store.js +244 -0
- package/packages/agent-policy/dist/policy-store.js.map +1 -0
- package/packages/agent-policy/dist/types.d.ts +237 -0
- package/packages/agent-policy/dist/types.d.ts.map +1 -0
- package/packages/agent-policy/dist/types.js +130 -0
- package/packages/agent-policy/dist/types.js.map +1 -0
- package/packages/agent-policy/package.json +45 -0
- package/packages/agent-policy/src/extension.ts +413 -0
- package/packages/agent-policy/src/index.ts +52 -0
- package/packages/agent-policy/src/policy-loader.ts +398 -0
- package/packages/agent-policy/src/policy-renderer.ts +362 -0
- package/packages/agent-policy/src/policy-store.ts +319 -0
- package/packages/agent-policy/src/types.ts +385 -0
- package/packages/agent-policy/test/policy.test.ts +383 -0
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/codex-watcher/dist/src/parser.d.ts.map +1 -1
- package/packages/codex-watcher/dist/src/parser.js +35 -0
- package/packages/codex-watcher/dist/src/parser.js.map +1 -1
- package/packages/codex-watcher/package.json +1 -1
- package/packages/codex-watcher/src/parser.ts +41 -0
- package/packages/config-capture/package.json +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/dist/adapters/telegram-adapter.d.ts +5 -0
- package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/telegram-adapter.js +54 -0
- package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
- package/packages/notification/dist/notification-center.d.ts +13 -0
- package/packages/notification/dist/notification-center.d.ts.map +1 -1
- package/packages/notification/dist/notification-center.js +36 -0
- package/packages/notification/dist/notification-center.js.map +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/notification/src/adapters/telegram-adapter.ts +71 -0
- package/packages/notification/src/notification-center.ts +53 -0
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +1 -1
- package/packages/paperclip-integration/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/package.json +1 -1
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/trajectory/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/write-review/package.json +1 -1
- package/proactive-compact.ts +2 -2
- package/scripts/debug-codex-integration.ts +203 -0
- package/scripts/sync-keys-from-pi.ts +188 -0
- package/scripts/test-codex-session.ts +23 -0
- package/scripts/test-openai.ts +14 -0
- package/scripts/test-telegram.ts +34 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the agent-policy package.
|
|
3
|
+
*
|
|
4
|
+
* These types define the policy delivery and enforcement model:
|
|
5
|
+
* - PolicyManifest: describes the loaded rules (hashed, scoped, trusted)
|
|
6
|
+
* - PolicyReceipt: proves a session received a specific revision
|
|
7
|
+
* - HarnessRulesTool: the tool for retrieving and acknowledging rules
|
|
8
|
+
* - MinimaxFindingEnvelope: LSP/code analysis verdict for tool results
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* A single source file contributing to the policy.
|
|
12
|
+
*/
|
|
13
|
+
export interface PolicySource {
|
|
14
|
+
/** Absolute path to the source file */
|
|
15
|
+
path: string;
|
|
16
|
+
/** Scope this source applies to (e.g., "src/", "packages/foo/") */
|
|
17
|
+
scope: string;
|
|
18
|
+
/** Whether this source is mandatory or advisory */
|
|
19
|
+
priority: "mandatory" | "advisory";
|
|
20
|
+
/** SHA-256 hash of the normalized content */
|
|
21
|
+
sha256: string;
|
|
22
|
+
/** Byte count of the content */
|
|
23
|
+
bytes: number;
|
|
24
|
+
/** Whether this is a harness-owned source (vs project-owned) */
|
|
25
|
+
harnessOwned: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Policy manifest describing all loaded rules for a session.
|
|
29
|
+
*/
|
|
30
|
+
export interface PolicyManifest {
|
|
31
|
+
/** Short SHA-256 of the combined mandatory content */
|
|
32
|
+
revision: string;
|
|
33
|
+
/** Absolute path to the resolved project root */
|
|
34
|
+
projectRoot: string;
|
|
35
|
+
/** Trust level for project-owned rules */
|
|
36
|
+
trust: "trusted" | "untrusted" | "unknown";
|
|
37
|
+
/** Coverage status of the policy loading */
|
|
38
|
+
coverage: "complete" | "partial" | "degraded";
|
|
39
|
+
/** All sources contributing to this policy */
|
|
40
|
+
sources: PolicySource[];
|
|
41
|
+
/** When this manifest was created (ms since epoch) */
|
|
42
|
+
loadedAt: number;
|
|
43
|
+
/** Error message if coverage is degraded */
|
|
44
|
+
loadError?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Proof that a session received a specific policy revision.
|
|
48
|
+
* Stored per-session to prevent reuse across sessions or scopes.
|
|
49
|
+
*/
|
|
50
|
+
export interface PolicyReceipt {
|
|
51
|
+
/** Stable session identifier */
|
|
52
|
+
sessionId: string;
|
|
53
|
+
/** Project root this receipt applies to */
|
|
54
|
+
projectRoot: string;
|
|
55
|
+
/** The revision this receipt covers */
|
|
56
|
+
revision: string;
|
|
57
|
+
/** Scope this receipt applies to (empty = root scope) */
|
|
58
|
+
scope: string;
|
|
59
|
+
/** When the policy was delivered (ms since epoch) */
|
|
60
|
+
deliveredAt: number;
|
|
61
|
+
/** Which sections were delivered */
|
|
62
|
+
sectionsDelivered: string[];
|
|
63
|
+
/** Delivery method: 'system_prompt' or 'tool' */
|
|
64
|
+
deliveryMethod: "system_prompt" | "tool";
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check if a receipt covers a given manifest.
|
|
68
|
+
*/
|
|
69
|
+
export declare function receiptCoversManifest(receipt: PolicyReceipt, manifest: PolicyManifest): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Extract scope from manifest sources.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getScopeFromManifest(manifest: PolicyManifest): string;
|
|
74
|
+
/**
|
|
75
|
+
* Classification of a tool call for policy enforcement.
|
|
76
|
+
*/
|
|
77
|
+
export interface ToolCallCapability {
|
|
78
|
+
/** Whether this call can modify project files */
|
|
79
|
+
mutatesProject: boolean;
|
|
80
|
+
/** Whether this call can release the project (commit, push, build) */
|
|
81
|
+
releasesProject: boolean;
|
|
82
|
+
/** Specific file paths affected (if known) */
|
|
83
|
+
affectedPaths?: string[];
|
|
84
|
+
/** Whether this is a child agent delegation */
|
|
85
|
+
isChildDelegation: boolean;
|
|
86
|
+
/** Classification confidence */
|
|
87
|
+
confidence: "high" | "medium" | "low";
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Classify a tool call by its name and input.
|
|
91
|
+
*/
|
|
92
|
+
export type ToolClassifier = (toolName: string, input: unknown) => ToolCallCapability;
|
|
93
|
+
/**
|
|
94
|
+
* Default tool classifier for pi-harness.
|
|
95
|
+
* Classifies actual capability, not just literal tool names.
|
|
96
|
+
*/
|
|
97
|
+
export declare function classifyToolCall(toolName: string, input: unknown): ToolCallCapability;
|
|
98
|
+
/**
|
|
99
|
+
* Input for the harness_rules tool.
|
|
100
|
+
*/
|
|
101
|
+
export type HarnessRulesInput = {
|
|
102
|
+
action: "manifest";
|
|
103
|
+
} | {
|
|
104
|
+
action: "read";
|
|
105
|
+
source?: string;
|
|
106
|
+
section?: string;
|
|
107
|
+
} | {
|
|
108
|
+
action: "acknowledge";
|
|
109
|
+
revision: string;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Output for the harness_rules tool.
|
|
113
|
+
*/
|
|
114
|
+
export interface HarnessRulesOutput {
|
|
115
|
+
manifest?: PolicyManifest;
|
|
116
|
+
sections?: PolicySection[];
|
|
117
|
+
receipt?: PolicyReceipt;
|
|
118
|
+
acknowledged?: boolean;
|
|
119
|
+
error?: string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* A single section of a policy source.
|
|
123
|
+
*/
|
|
124
|
+
export interface PolicySection {
|
|
125
|
+
/** Section identifier (heading or index) */
|
|
126
|
+
id: string;
|
|
127
|
+
/** Section title */
|
|
128
|
+
title: string;
|
|
129
|
+
/** Section content */
|
|
130
|
+
content: string;
|
|
131
|
+
/** Source file path */
|
|
132
|
+
source: string;
|
|
133
|
+
/** Scope this section applies to */
|
|
134
|
+
scope: string;
|
|
135
|
+
/** Priority of the containing source */
|
|
136
|
+
priority: "mandatory" | "advisory";
|
|
137
|
+
/** Byte offset in source */
|
|
138
|
+
offset: number;
|
|
139
|
+
/** Whether this section was truncated */
|
|
140
|
+
truncated: boolean;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* A single code finding from LSP or other analyzer.
|
|
144
|
+
*/
|
|
145
|
+
export interface PolicyFinding {
|
|
146
|
+
/** Unique identifier for this finding */
|
|
147
|
+
id: string;
|
|
148
|
+
/** File path (relative or absolute) */
|
|
149
|
+
path: string;
|
|
150
|
+
/** Line number (1-based) */
|
|
151
|
+
line?: number;
|
|
152
|
+
/** Column number (1-based) */
|
|
153
|
+
column?: number;
|
|
154
|
+
/** Source of this finding */
|
|
155
|
+
source: "lsp" | "runner" | "structural" | "test" | "security" | "policy";
|
|
156
|
+
/** Human-readable message */
|
|
157
|
+
message: string;
|
|
158
|
+
/** Suggested fix (if available) */
|
|
159
|
+
fix?: string;
|
|
160
|
+
/** Severity level */
|
|
161
|
+
severity: "error" | "warning" | "information" | "hint";
|
|
162
|
+
/** Whether this finding blocks completion */
|
|
163
|
+
blocking: boolean;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Envelope for code analysis findings, attached to tool results.
|
|
167
|
+
* This is the pi-lens-style verdict that Minimax respects.
|
|
168
|
+
*/
|
|
169
|
+
export interface MinimaxFindingEnvelope {
|
|
170
|
+
/** Overall verdict */
|
|
171
|
+
verdict: "blocking" | "advisory" | "clean" | "degraded";
|
|
172
|
+
/** Coverage level of this analysis */
|
|
173
|
+
coverage: "delta" | "targeted" | "full";
|
|
174
|
+
/** Freshness of the analysis */
|
|
175
|
+
freshness: "fresh" | "stale" | "indeterminate";
|
|
176
|
+
/** Individual findings */
|
|
177
|
+
findings: PolicyFinding[];
|
|
178
|
+
/** Suggested next action */
|
|
179
|
+
nextAction?: "fix" | "reread" | "run_full" | "continue";
|
|
180
|
+
/** Human-readable summary for display */
|
|
181
|
+
summary: string;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Combined verdict for harness policy + code analysis.
|
|
185
|
+
*/
|
|
186
|
+
export interface HarnessAgentVerdict {
|
|
187
|
+
/** Policy status */
|
|
188
|
+
policy: {
|
|
189
|
+
revision: string;
|
|
190
|
+
received: boolean;
|
|
191
|
+
coverage: "complete" | "partial" | "degraded";
|
|
192
|
+
};
|
|
193
|
+
/** Code analysis status */
|
|
194
|
+
code: MinimaxFindingEnvelope;
|
|
195
|
+
/** Whether completion is allowed */
|
|
196
|
+
completionAllowed: boolean;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Configuration for the agent-policy extension.
|
|
200
|
+
*/
|
|
201
|
+
export interface AgentPolicyConfig {
|
|
202
|
+
/** Path to the harness-owned AGENTS.md */
|
|
203
|
+
harnessRulesPath: URL;
|
|
204
|
+
/** Whether to require receipt before mutation */
|
|
205
|
+
requireReceiptBeforeMutation: boolean;
|
|
206
|
+
/** LSP mode: 'pi-lens' (compose) or 'native' (fallback) */
|
|
207
|
+
lspMode: "pi-lens" | "native";
|
|
208
|
+
/** Optional: path to additional harness rules */
|
|
209
|
+
additionalRulesPaths?: URL[];
|
|
210
|
+
/** Optional: custom tool classifier */
|
|
211
|
+
toolClassifier?: ToolClassifier;
|
|
212
|
+
/** Whether to enable Git guard (blocks commit until blockers cleared) */
|
|
213
|
+
gitGuardEnabled?: boolean;
|
|
214
|
+
/** Whether to enable build guard */
|
|
215
|
+
buildGuardEnabled?: boolean;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Events emitted by the policy runtime.
|
|
219
|
+
*/
|
|
220
|
+
export interface PolicyEvents {
|
|
221
|
+
/** Fired when a policy is loaded */
|
|
222
|
+
onPolicyLoaded?: (manifest: PolicyManifest) => void;
|
|
223
|
+
/** Fired when a policy receipt is recorded */
|
|
224
|
+
onReceiptRecorded?: (receipt: PolicyReceipt) => void;
|
|
225
|
+
/** Fired when a mutation is blocked */
|
|
226
|
+
onMutationBlocked?: (event: {
|
|
227
|
+
sessionId: string;
|
|
228
|
+
revision: string;
|
|
229
|
+
reason: string;
|
|
230
|
+
}) => void;
|
|
231
|
+
/** Fired when policy coverage is degraded */
|
|
232
|
+
onCoverageDegraded?: (event: {
|
|
233
|
+
reason: string;
|
|
234
|
+
error?: string;
|
|
235
|
+
}) => void;
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the agent-policy package.
|
|
3
|
+
*
|
|
4
|
+
* These types define the policy delivery and enforcement model:
|
|
5
|
+
* - PolicyManifest: describes the loaded rules (hashed, scoped, trusted)
|
|
6
|
+
* - PolicyReceipt: proves a session received a specific revision
|
|
7
|
+
* - HarnessRulesTool: the tool for retrieving and acknowledging rules
|
|
8
|
+
* - MinimaxFindingEnvelope: LSP/code analysis verdict for tool results
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Check if a receipt covers a given manifest.
|
|
12
|
+
*/
|
|
13
|
+
export function receiptCoversManifest(receipt, manifest) {
|
|
14
|
+
return (receipt.projectRoot === manifest.projectRoot &&
|
|
15
|
+
receipt.revision === manifest.revision &&
|
|
16
|
+
receipt.scope === getScopeFromManifest(manifest));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Extract scope from manifest sources.
|
|
20
|
+
*/
|
|
21
|
+
export function getScopeFromManifest(manifest) {
|
|
22
|
+
// Return the most specific (narrowest) scope from mandatory sources
|
|
23
|
+
const mandatorySources = manifest.sources.filter(s => s.priority === "mandatory");
|
|
24
|
+
if (mandatorySources.length === 0)
|
|
25
|
+
return "";
|
|
26
|
+
// Sort by scope length descending (most specific first)
|
|
27
|
+
mandatorySources.sort((a, b) => b.scope.length - a.scope.length);
|
|
28
|
+
return mandatorySources[0]?.scope ?? "";
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Default tool classifier for pi-harness.
|
|
32
|
+
* Classifies actual capability, not just literal tool names.
|
|
33
|
+
*/
|
|
34
|
+
export function classifyToolCall(toolName, input) {
|
|
35
|
+
const inputObj = input;
|
|
36
|
+
switch (toolName) {
|
|
37
|
+
case "write":
|
|
38
|
+
case "edit":
|
|
39
|
+
case "multi-edit":
|
|
40
|
+
return {
|
|
41
|
+
mutatesProject: true,
|
|
42
|
+
releasesProject: false,
|
|
43
|
+
affectedPaths: inputObj?.path ? [String(inputObj.path)] : undefined,
|
|
44
|
+
isChildDelegation: false,
|
|
45
|
+
confidence: "high",
|
|
46
|
+
};
|
|
47
|
+
case "bash":
|
|
48
|
+
case "shell":
|
|
49
|
+
case "ctx_execute":
|
|
50
|
+
case "ctx_execute_file": {
|
|
51
|
+
const command = String(inputObj?.command ?? "");
|
|
52
|
+
const path = String(inputObj?.path ?? "");
|
|
53
|
+
// Check for git operations
|
|
54
|
+
if (/^git\s+(commit|push|checkout|reset|clean|merge|rebase)/.test(command)) {
|
|
55
|
+
return {
|
|
56
|
+
mutatesProject: true,
|
|
57
|
+
releasesProject: true,
|
|
58
|
+
affectedPaths: path ? [path] : undefined,
|
|
59
|
+
isChildDelegation: false,
|
|
60
|
+
confidence: "high",
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
// Check for build/release commands
|
|
64
|
+
if (/^(npm|bun|yarn|pnpm)\s+(run|build|test|publish|deploy)/.test(command) ||
|
|
65
|
+
/^(cargo|go|make|gradle|mvn)\s+(build|test|run)/.test(command)) {
|
|
66
|
+
return {
|
|
67
|
+
mutatesProject: command.includes("--watch") || command.includes("-o "),
|
|
68
|
+
releasesProject: true,
|
|
69
|
+
affectedPaths: path ? [path] : undefined,
|
|
70
|
+
isChildDelegation: false,
|
|
71
|
+
confidence: "high",
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// General shell commands can modify files
|
|
75
|
+
return {
|
|
76
|
+
mutatesProject: true,
|
|
77
|
+
releasesProject: false,
|
|
78
|
+
affectedPaths: path ? [path] : undefined,
|
|
79
|
+
isChildDelegation: false,
|
|
80
|
+
confidence: "medium",
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
case "subagent":
|
|
84
|
+
case "spawn":
|
|
85
|
+
case "delegate": {
|
|
86
|
+
// Child agent delegation is a mutation-equivalent operation
|
|
87
|
+
return {
|
|
88
|
+
mutatesProject: true,
|
|
89
|
+
releasesProject: false,
|
|
90
|
+
affectedPaths: undefined,
|
|
91
|
+
isChildDelegation: true,
|
|
92
|
+
confidence: "high",
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
case "read":
|
|
96
|
+
case "glob":
|
|
97
|
+
case "grep":
|
|
98
|
+
case "search":
|
|
99
|
+
case "symbol_search":
|
|
100
|
+
case "find":
|
|
101
|
+
case "lens_diagnostics":
|
|
102
|
+
case "module_report":
|
|
103
|
+
case "project_report":
|
|
104
|
+
return {
|
|
105
|
+
mutatesProject: false,
|
|
106
|
+
releasesProject: false,
|
|
107
|
+
affectedPaths: inputObj?.path ? [String(inputObj.path)] : undefined,
|
|
108
|
+
isChildDelegation: false,
|
|
109
|
+
confidence: "high",
|
|
110
|
+
};
|
|
111
|
+
case "harness_rules":
|
|
112
|
+
return {
|
|
113
|
+
mutatesProject: false,
|
|
114
|
+
releasesProject: false,
|
|
115
|
+
affectedPaths: undefined,
|
|
116
|
+
isChildDelegation: false,
|
|
117
|
+
confidence: "high",
|
|
118
|
+
};
|
|
119
|
+
default:
|
|
120
|
+
// Unknown tools: conservative assumption
|
|
121
|
+
return {
|
|
122
|
+
mutatesProject: true,
|
|
123
|
+
releasesProject: false,
|
|
124
|
+
affectedPaths: undefined,
|
|
125
|
+
isChildDelegation: false,
|
|
126
|
+
confidence: "low",
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pi/agent-policy",
|
|
3
|
+
"version": "1.1.152",
|
|
4
|
+
"description": "Agent policy runtime for pi-harness - enforces mandatory rule delivery and mutation gating",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./extension": {
|
|
14
|
+
"import": "./dist/extension.js",
|
|
15
|
+
"types": "./dist/extension.d.ts"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"test": "bun test",
|
|
24
|
+
"test:watch": "bun test --watch"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"pi",
|
|
28
|
+
"harness",
|
|
29
|
+
"runtime",
|
|
30
|
+
"policy",
|
|
31
|
+
"agent",
|
|
32
|
+
"rules"
|
|
33
|
+
],
|
|
34
|
+
"author": "",
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=18.0.0"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"typescript": "^5.0.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"typescript": "^7.0.2"
|
|
44
|
+
}
|
|
45
|
+
}
|