@spences10/pi-harness 0.0.10 → 0.1.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.
- package/README.md +68 -15
- package/dist/assessment.d.ts +59 -0
- package/dist/assessment.js +232 -0
- package/dist/assessment.js.map +1 -0
- package/dist/extension.js +313 -15
- package/dist/extension.js.map +1 -1
- package/dist/index.d.ts +31 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/prompt.d.ts +1 -1
- package/dist/prompt.js +5 -1
- package/dist/prompt.js.map +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/renderers.js +7 -8
- package/dist/runtime/renderers.js.map +1 -1
- package/dist/schema.d.ts +1 -0
- package/dist/schema.js +3 -0
- package/dist/schema.js.map +1 -1
- package/package.json +3 -3
- package/skills/create-harness/SKILL.md +51 -57
- package/skills/execute-harness/SKILL.md +7 -4
package/dist/extension.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { HARNESS_ASSESSMENT_CUSTOM_TYPE, assessment_active, assessment_context, assessment_tool_names, check_assessment_command, create_assessment_state, format_assessment_record, harness_assess_params_schema, harness_assessment_submit_params_schema, is_assessment_tool_allowed, submit_assessment_record, } from './assessment.js';
|
|
2
4
|
import { check_command_allowed, check_path_allowed, } from './enforcement/policy.js';
|
|
3
5
|
import { HARNESS_SYSTEM_PROMPT } from './prompt.js';
|
|
4
6
|
import { harness_paths, read_contract, read_status, } from './runtime/files.js';
|
|
@@ -16,6 +18,13 @@ function restore_active_harness(ctx) {
|
|
|
16
18
|
entry.customType === HARNESS_CUSTOM_TYPE)
|
|
17
19
|
.pop()?.data?.active_harness_dir;
|
|
18
20
|
}
|
|
21
|
+
function restore_assessment(ctx) {
|
|
22
|
+
const entries = ctx.sessionManager.getBranch();
|
|
23
|
+
return entries
|
|
24
|
+
.filter((entry) => entry.type === 'custom' &&
|
|
25
|
+
entry.customType === HARNESS_ASSESSMENT_CUSTOM_TYPE)
|
|
26
|
+
.pop()?.data;
|
|
27
|
+
}
|
|
19
28
|
function update_harness_ui(ctx, harness_dir) {
|
|
20
29
|
if (!harness_dir ||
|
|
21
30
|
!existsSync(harness_paths(harness_dir).contract)) {
|
|
@@ -26,6 +35,16 @@ function update_harness_ui(ctx, harness_dir) {
|
|
|
26
35
|
ctx.ui.setStatus('harness', format_harness_status_line(harness_dir));
|
|
27
36
|
ctx.ui.setWidget('harness', undefined);
|
|
28
37
|
}
|
|
38
|
+
function update_assessment_ui(ctx, state) {
|
|
39
|
+
if (!state || !assessment_active(state)) {
|
|
40
|
+
ctx.ui.setStatus('harness-assessment', undefined);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const label = state.status === 'awaiting_approval'
|
|
44
|
+
? '🔎 assess: approval'
|
|
45
|
+
: '🔎 assess';
|
|
46
|
+
ctx.ui.setStatus('harness-assessment', label);
|
|
47
|
+
}
|
|
29
48
|
function parse_command(args) {
|
|
30
49
|
const [command = 'status', ...rest] = args.trim().split(/\s+/);
|
|
31
50
|
return { command, rest: rest.join(' ').trim() };
|
|
@@ -47,13 +66,220 @@ function is_terminal_harness(harness_dir) {
|
|
|
47
66
|
}
|
|
48
67
|
export default async function harness(pi) {
|
|
49
68
|
let active_harness_dir;
|
|
69
|
+
let assessment_state;
|
|
70
|
+
let decision_prompt_open = false;
|
|
50
71
|
function set_active_harness(harness_dir, ctx) {
|
|
51
72
|
active_harness_dir = harness_dir;
|
|
52
73
|
persist_active_harness(pi, harness_dir);
|
|
53
74
|
update_harness_ui(ctx, harness_dir);
|
|
54
75
|
}
|
|
76
|
+
function persist_assessment(state, ctx) {
|
|
77
|
+
assessment_state = state;
|
|
78
|
+
pi.appendEntry(HARNESS_ASSESSMENT_CUSTOM_TYPE, state);
|
|
79
|
+
update_assessment_ui(ctx, state);
|
|
80
|
+
}
|
|
81
|
+
function start_assessment(task, source, ctx) {
|
|
82
|
+
const normalized_task = task.trim();
|
|
83
|
+
if (assessment_active(assessment_state) &&
|
|
84
|
+
assessment_state?.task === normalized_task) {
|
|
85
|
+
return assessment_state;
|
|
86
|
+
}
|
|
87
|
+
const tools_before_assessment = assessment_active(assessment_state)
|
|
88
|
+
? assessment_state?.tools_before_assessment
|
|
89
|
+
: pi.getActiveTools();
|
|
90
|
+
const state = create_assessment_state(normalized_task, source, tools_before_assessment ?? pi.getActiveTools());
|
|
91
|
+
persist_assessment(state, ctx);
|
|
92
|
+
pi.setActiveTools(assessment_tool_names(state.tools_before_assessment));
|
|
93
|
+
return state;
|
|
94
|
+
}
|
|
95
|
+
function restore_tools_after_assessment(state) {
|
|
96
|
+
pi.setActiveTools(state.tools_before_assessment);
|
|
97
|
+
}
|
|
98
|
+
function complete_assessment(decision, ctx) {
|
|
99
|
+
const current = assessment_state;
|
|
100
|
+
const record = current?.record;
|
|
101
|
+
if (!current ||
|
|
102
|
+
current.status !== 'awaiting_approval' ||
|
|
103
|
+
!record) {
|
|
104
|
+
ctx.ui.notify('No assessment is awaiting approval', 'warning');
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (decision === 'direct' &&
|
|
108
|
+
active_harness_dir &&
|
|
109
|
+
!is_terminal_harness(active_harness_dir)) {
|
|
110
|
+
ctx.ui.notify('Direct work cannot bypass the active harness; submit an approved harness contract to amend it', 'warning');
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (decision === 'harness') {
|
|
114
|
+
if (!record.proposed_contract) {
|
|
115
|
+
ctx.ui.notify('This assessment has no proposed harness contract', 'warning');
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const approved = {
|
|
119
|
+
...current,
|
|
120
|
+
status: 'approved',
|
|
121
|
+
decision,
|
|
122
|
+
};
|
|
123
|
+
if (active_harness_dir &&
|
|
124
|
+
!is_terminal_harness(active_harness_dir)) {
|
|
125
|
+
if (record.proposed_contract.cwd ||
|
|
126
|
+
record.proposed_contract.forbidden_paths?.length ||
|
|
127
|
+
record.proposed_contract.forbidden_commands?.length) {
|
|
128
|
+
ctx.ui.notify('Outer-policy changes require a separate harness contract', 'warning');
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const contract = amend_harness_runtime({
|
|
132
|
+
harness_dir: active_harness_dir,
|
|
133
|
+
reason: `Approved assessment ${approved.id} v${approved.version}`,
|
|
134
|
+
requested_by: 'user',
|
|
135
|
+
task: record.proposed_contract.task,
|
|
136
|
+
allowed_paths: record.proposed_contract.allowed_paths,
|
|
137
|
+
validation_commands: record.proposed_contract.validation_commands,
|
|
138
|
+
allow_test_changes: record.proposed_contract.allow_test_changes,
|
|
139
|
+
escalation_rules: record.proposed_contract.escalation_rules,
|
|
140
|
+
planner_model: record.proposed_contract.planner_model,
|
|
141
|
+
planner_thinking: record.proposed_contract.planner_thinking,
|
|
142
|
+
executor_model: record.proposed_contract.executor_model,
|
|
143
|
+
executor_thinking: record.proposed_contract.executor_thinking,
|
|
144
|
+
reviewer_model: record.proposed_contract.reviewer_model,
|
|
145
|
+
reviewer_thinking: record.proposed_contract.reviewer_thinking,
|
|
146
|
+
});
|
|
147
|
+
persist_assessment(approved, ctx);
|
|
148
|
+
restore_tools_after_assessment(approved);
|
|
149
|
+
set_active_harness(active_harness_dir, ctx);
|
|
150
|
+
return {
|
|
151
|
+
message: `The user approved assessment ${approved.id} v${approved.version}. Resume harness ${contract.id} with approved scaffold v${contract.scaffold.version}.`,
|
|
152
|
+
trigger: true,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
persist_assessment(approved, ctx);
|
|
156
|
+
restore_tools_after_assessment(approved);
|
|
157
|
+
const { harness_dir, contract } = create_harness_runtime(record.proposed_contract, ctx.cwd);
|
|
158
|
+
set_active_harness(harness_dir, ctx);
|
|
159
|
+
return {
|
|
160
|
+
message: `The user approved assessment ${approved.id} v${approved.version}. Execute harness ${contract.id} from ${harness_dir}.`,
|
|
161
|
+
trigger: true,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
const completed = {
|
|
165
|
+
...current,
|
|
166
|
+
status: decision === 'reject' ? 'rejected' : 'approved',
|
|
167
|
+
decision,
|
|
168
|
+
};
|
|
169
|
+
persist_assessment(completed, ctx);
|
|
170
|
+
restore_tools_after_assessment(completed);
|
|
171
|
+
if (decision === 'direct') {
|
|
172
|
+
return {
|
|
173
|
+
message: `The user approved direct work from assessment ${completed.id} v${completed.version}. Proceed only with the smallest vertical slice recorded in the assessment.`,
|
|
174
|
+
trigger: true,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
message: `The user rejected assessment ${completed.id} v${completed.version}. Do not implement the candidate work.`,
|
|
179
|
+
trigger: false,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
function send_decision_message(result) {
|
|
183
|
+
pi.sendMessage({
|
|
184
|
+
customType: 'harness-assessment-decision',
|
|
185
|
+
content: result.message,
|
|
186
|
+
display: true,
|
|
187
|
+
}, {
|
|
188
|
+
triggerTurn: result.trigger,
|
|
189
|
+
deliverAs: 'followUp',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
async function prompt_for_assessment_decision(ctx) {
|
|
193
|
+
const current = assessment_state;
|
|
194
|
+
if (decision_prompt_open ||
|
|
195
|
+
current?.status !== 'awaiting_approval' ||
|
|
196
|
+
!current.record ||
|
|
197
|
+
!ctx.hasUI) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
decision_prompt_open = true;
|
|
201
|
+
try {
|
|
202
|
+
const harness_is_active = active_harness_dir &&
|
|
203
|
+
!is_terminal_harness(active_harness_dir);
|
|
204
|
+
const options = [
|
|
205
|
+
...(current.record.proposed_contract
|
|
206
|
+
? [
|
|
207
|
+
harness_is_active
|
|
208
|
+
? 'Approve and amend active harness'
|
|
209
|
+
: 'Create and execute harness',
|
|
210
|
+
]
|
|
211
|
+
: []),
|
|
212
|
+
...(harness_is_active ? [] : ['Proceed with direct work']),
|
|
213
|
+
'Reject the proposed work',
|
|
214
|
+
'Keep assessing',
|
|
215
|
+
];
|
|
216
|
+
const choice = await ctx.ui.select(`Assessment ${current.id} v${current.version}`, options);
|
|
217
|
+
if (assessment_state?.id !== current.id ||
|
|
218
|
+
assessment_state.version !== current.version) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const decision = choice?.startsWith('Create') || choice?.startsWith('Approve')
|
|
222
|
+
? 'harness'
|
|
223
|
+
: choice?.startsWith('Proceed')
|
|
224
|
+
? 'direct'
|
|
225
|
+
: choice?.startsWith('Reject')
|
|
226
|
+
? 'reject'
|
|
227
|
+
: undefined;
|
|
228
|
+
if (!decision)
|
|
229
|
+
return;
|
|
230
|
+
const result = complete_assessment(decision, ctx);
|
|
231
|
+
if (result)
|
|
232
|
+
send_decision_message(result);
|
|
233
|
+
}
|
|
234
|
+
finally {
|
|
235
|
+
decision_prompt_open = false;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
pi.registerCommand('assess', {
|
|
239
|
+
description: 'Assess candidate work before choosing direct execution, a harness, or rejection',
|
|
240
|
+
handler: async (args, ctx) => {
|
|
241
|
+
const trimmed = args.trim();
|
|
242
|
+
if (!trimmed || trimmed === 'status') {
|
|
243
|
+
if (!assessment_state) {
|
|
244
|
+
ctx.ui.notify('No harness assessment', 'warning');
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
ctx.ui.notify(format_assessment_record(assessment_state), 'info');
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
if (trimmed === 'approve' || trimmed.startsWith('approve ')) {
|
|
251
|
+
const requested = trimmed.slice('approve'.length).trim();
|
|
252
|
+
if (requested === 'harness' || requested === 'direct') {
|
|
253
|
+
const result = complete_assessment(requested, ctx);
|
|
254
|
+
if (result)
|
|
255
|
+
send_decision_message(result);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
await prompt_for_assessment_decision(ctx);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (trimmed === 'reject') {
|
|
262
|
+
const result = complete_assessment('reject', ctx);
|
|
263
|
+
if (result)
|
|
264
|
+
send_decision_message(result);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (trimmed === 'clear') {
|
|
268
|
+
if (assessment_state && assessment_active(assessment_state)) {
|
|
269
|
+
restore_tools_after_assessment(assessment_state);
|
|
270
|
+
}
|
|
271
|
+
assessment_state = undefined;
|
|
272
|
+
pi.appendEntry(HARNESS_ASSESSMENT_CUSTOM_TYPE, undefined);
|
|
273
|
+
update_assessment_ui(ctx, undefined);
|
|
274
|
+
ctx.ui.notify('Cleared harness assessment', 'info');
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const state = start_assessment(trimmed, 'user', ctx);
|
|
278
|
+
pi.sendUserMessage(`Assess this candidate work without modifying the repository. Use repository evidence and existing primitives before recommending direct work, a harness, or rejection.\n\n${state.task}`);
|
|
279
|
+
},
|
|
280
|
+
});
|
|
55
281
|
pi.registerCommand('harness', {
|
|
56
|
-
description: '
|
|
282
|
+
description: 'Assess, run, review, and inspect ephemeral /tmp task harnesses',
|
|
57
283
|
handler: async (args, ctx) => {
|
|
58
284
|
const { command, rest } = parse_command(args);
|
|
59
285
|
if (command === 'clear') {
|
|
@@ -80,7 +306,12 @@ export default async function harness(pi) {
|
|
|
80
306
|
return;
|
|
81
307
|
}
|
|
82
308
|
if (command === 'create') {
|
|
83
|
-
|
|
309
|
+
if (!rest) {
|
|
310
|
+
ctx.ui.notify('Usage: /harness create <task>', 'warning');
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
const state = start_assessment(rest, 'harness-create', ctx);
|
|
314
|
+
pi.sendUserMessage(`Assess this task before creating a harness. Do not treat candidate capabilities as implementation commitments.\n\n${state.task}`);
|
|
84
315
|
return;
|
|
85
316
|
}
|
|
86
317
|
if (command === 'run') {
|
|
@@ -106,31 +337,61 @@ export default async function harness(pi) {
|
|
|
106
337
|
ctx.ui.notify('Usage: /harness create|run|review|status|use|clear', 'info');
|
|
107
338
|
},
|
|
108
339
|
});
|
|
340
|
+
pi.registerTool({
|
|
341
|
+
name: 'harness_assess',
|
|
342
|
+
label: 'Start Harness Assessment',
|
|
343
|
+
description: 'Enter read-only assessment before deciding whether candidate work should run directly, use a harness, or be rejected.',
|
|
344
|
+
promptSnippet: 'Enter read-only evidence-gated assessment before adopting broad or risky work',
|
|
345
|
+
promptGuidelines: [
|
|
346
|
+
'Call harness_assess before repository mutation when a task may need an enforceable harness contract.',
|
|
347
|
+
'Call harness_assess by itself; after it activates, use only the remaining read-only tools.',
|
|
348
|
+
],
|
|
349
|
+
parameters: harness_assess_params_schema,
|
|
350
|
+
async execute(_tool_call_id, params, _signal, _on_update, ctx) {
|
|
351
|
+
const state = start_assessment(params.task, 'agent', ctx);
|
|
352
|
+
return tool_text(assessment_context(state));
|
|
353
|
+
},
|
|
354
|
+
});
|
|
355
|
+
pi.registerTool({
|
|
356
|
+
name: 'harness_assessment_submit',
|
|
357
|
+
label: 'Submit Harness Assessment',
|
|
358
|
+
description: 'Submit repository evidence and one recommendation for direct work, a harness contract, or rejection. Direct user approval is still required.',
|
|
359
|
+
parameters: harness_assessment_submit_params_schema,
|
|
360
|
+
async execute(_tool_call_id, params, _signal, _on_update, ctx) {
|
|
361
|
+
if (params.proposed_contract?.cwd &&
|
|
362
|
+
resolve(params.proposed_contract.cwd) !== resolve(ctx.cwd)) {
|
|
363
|
+
throw new Error('Proposed harness cwd must match the assessed project');
|
|
364
|
+
}
|
|
365
|
+
const current = assessment_state ??
|
|
366
|
+
start_assessment(params.task, 'agent', ctx);
|
|
367
|
+
const submitted = submit_assessment_record(current, params);
|
|
368
|
+
persist_assessment(submitted, ctx);
|
|
369
|
+
return tool_text(`${format_assessment_record(submitted)}\n\nWaiting for direct user approval.`);
|
|
370
|
+
},
|
|
371
|
+
});
|
|
109
372
|
pi.registerTool({
|
|
110
373
|
name: 'harness_create',
|
|
111
374
|
label: 'Create Harness',
|
|
112
|
-
description: '
|
|
113
|
-
promptSnippet: '
|
|
375
|
+
description: 'Request an ephemeral /tmp task harness. An approved assessment is required before creation.',
|
|
376
|
+
promptSnippet: 'Request constrained execution only after evidence-gated assessment and direct user approval',
|
|
114
377
|
promptGuidelines: [
|
|
115
|
-
'Use harness_create
|
|
116
|
-
'
|
|
117
|
-
'Treat harness.json as the execution contract and record progress with harness_update.',
|
|
378
|
+
'Use harness_assess before harness_create. An unapproved harness_create call is blocked and starts assessment.',
|
|
379
|
+
'Use the normal direct workflow for bounded, low-risk changes covered by standard validation.',
|
|
118
380
|
],
|
|
119
381
|
parameters: harness_create_params_schema,
|
|
120
382
|
async execute(_tool_call_id, params, _signal, _on_update, ctx) {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
return tool_text(`Created harness ${contract.id}\n${format_harness_summary(harness_dir)}`);
|
|
383
|
+
const state = start_assessment(params.task, 'harness-create', ctx);
|
|
384
|
+
return tool_text(`Harness not created. Complete and obtain approval for assessment ${state.id}.`);
|
|
124
385
|
},
|
|
125
386
|
});
|
|
126
387
|
pi.registerTool({
|
|
127
388
|
name: 'harness_amend',
|
|
128
389
|
label: 'Amend Harness Scaffold',
|
|
129
390
|
description: 'Amend the active execution scaffold with an audited version change. Cannot weaken the outer runtime policy.',
|
|
130
|
-
promptSnippet: 'Amend task scope, validation, test policy, or model strategy when
|
|
391
|
+
promptSnippet: 'Amend bounded task scope, validation, test policy, or model strategy when evidence changes',
|
|
131
392
|
promptGuidelines: [
|
|
132
|
-
'Use harness_amend for
|
|
133
|
-
'
|
|
393
|
+
'Use harness_amend for bounded changes to the inner scaffold.',
|
|
394
|
+
'New capabilities, architecture decisions, or outer-policy expansion require assessment instead of a silent amendment.',
|
|
134
395
|
],
|
|
135
396
|
parameters: harness_amend_params_schema,
|
|
136
397
|
async execute(_tool_call_id, params, _signal, _on_update, ctx) {
|
|
@@ -161,11 +422,15 @@ export default async function harness(pi) {
|
|
|
161
422
|
});
|
|
162
423
|
pi.on('session_start', async (_event, ctx) => {
|
|
163
424
|
active_harness_dir = restore_active_harness(ctx);
|
|
425
|
+
assessment_state = restore_assessment(ctx);
|
|
164
426
|
if (is_terminal_harness(active_harness_dir)) {
|
|
165
427
|
set_active_harness(undefined, ctx);
|
|
166
|
-
|
|
428
|
+
}
|
|
429
|
+
if (assessment_active(assessment_state)) {
|
|
430
|
+
pi.setActiveTools(assessment_tool_names(pi.getActiveTools()));
|
|
167
431
|
}
|
|
168
432
|
update_harness_ui(ctx, active_harness_dir);
|
|
433
|
+
update_assessment_ui(ctx, assessment_state);
|
|
169
434
|
});
|
|
170
435
|
pi.on('input', async (event, ctx) => {
|
|
171
436
|
if (event.source !== 'extension' &&
|
|
@@ -178,13 +443,42 @@ export default async function harness(pi) {
|
|
|
178
443
|
if (should_inject_harness_prompt(event)) {
|
|
179
444
|
system_prompt = `${system_prompt}\n\n${HARNESS_SYSTEM_PROMPT}`;
|
|
180
445
|
}
|
|
446
|
+
const current_assessment = assessment_state;
|
|
447
|
+
if (current_assessment && assessment_active(current_assessment)) {
|
|
448
|
+
system_prompt = `${system_prompt}\n\n${assessment_context(current_assessment)}`;
|
|
449
|
+
}
|
|
181
450
|
if (active_harness_dir &&
|
|
182
451
|
existsSync(harness_paths(active_harness_dir).contract)) {
|
|
183
452
|
system_prompt = `${system_prompt}\n\n${active_harness_context(active_harness_dir)}`;
|
|
184
453
|
}
|
|
185
454
|
return { systemPrompt: system_prompt };
|
|
186
455
|
});
|
|
187
|
-
pi.on('tool_call', async (event) => {
|
|
456
|
+
pi.on('tool_call', async (event, ctx) => {
|
|
457
|
+
if (event.toolName === 'harness_create') {
|
|
458
|
+
const input = event.input;
|
|
459
|
+
const task = input.task?.trim() || 'Unspecified harness request';
|
|
460
|
+
const state = start_assessment(task, 'harness-create', ctx);
|
|
461
|
+
return {
|
|
462
|
+
block: true,
|
|
463
|
+
reason: `Harness creation requires direct approval of an assessment. Assessment ${state.id} is active; investigate and call harness_assessment_submit.`,
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
const current_assessment = assessment_state;
|
|
467
|
+
if (current_assessment && assessment_active(current_assessment)) {
|
|
468
|
+
if (!is_assessment_tool_allowed(event.toolName)) {
|
|
469
|
+
return {
|
|
470
|
+
block: true,
|
|
471
|
+
reason: `Assessment ${current_assessment.id}: tool ${event.toolName} is not read-only and is disabled until the user decides.`,
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
if (event.toolName === 'bash') {
|
|
475
|
+
const input = event.input;
|
|
476
|
+
const result = check_assessment_command(input.command ?? '');
|
|
477
|
+
if (!result.ok) {
|
|
478
|
+
return { block: true, reason: result.reason };
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
188
482
|
if (!active_harness_dir ||
|
|
189
483
|
!existsSync(harness_paths(active_harness_dir).contract)) {
|
|
190
484
|
return;
|
|
@@ -206,8 +500,12 @@ export default async function harness(pi) {
|
|
|
206
500
|
return { block: true, reason: result.reason };
|
|
207
501
|
}
|
|
208
502
|
});
|
|
503
|
+
pi.on('agent_end', async (_event, ctx) => {
|
|
504
|
+
await prompt_for_assessment_decision(ctx);
|
|
505
|
+
});
|
|
209
506
|
pi.on('session_shutdown', async (_event, ctx) => {
|
|
210
507
|
ctx.ui.setStatus('harness', undefined);
|
|
508
|
+
ctx.ui.setStatus('harness-assessment', undefined);
|
|
211
509
|
ctx.ui.setWidget('harness', undefined);
|
|
212
510
|
});
|
|
213
511
|
}
|
package/dist/extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { assessment_active, assessment_context, assessment_tool_names, check_assessment_command, create_assessment_state, format_assessment_record, harness_assess_params_schema, HARNESS_ASSESSMENT_CUSTOM_TYPE, harness_assessment_submit_params_schema, is_assessment_tool_allowed, submit_assessment_record, } from './assessment.js';
|
|
2
|
+
export type { HarnessAssessmentRecommendation, HarnessAssessmentRecord, HarnessAssessmentSource, HarnessAssessmentState, HarnessAssessmentStatus, HarnessAssessParams, } from './assessment.js';
|
|
1
3
|
export { check_command_allowed, check_path_allowed, } from './enforcement/policy.js';
|
|
2
4
|
export { default, should_inject_harness_prompt, } from './extension.js';
|
|
3
5
|
export { HARNESS_SYSTEM_PROMPT } from './prompt.js';
|
|
@@ -22,6 +24,34 @@ export declare const testing: {
|
|
|
22
24
|
reviewer_model: import("typebox").TOptional<import("typebox").TString>;
|
|
23
25
|
reviewer_thinking: import("typebox").TOptional<import("typebox").TUnion<[import("typebox").TLiteral<"off">, import("typebox").TLiteral<"minimal">, import("typebox").TLiteral<"low">, import("typebox").TLiteral<"medium">, import("typebox").TLiteral<"high">, import("typebox").TLiteral<"xhigh">]>>;
|
|
24
26
|
}>;
|
|
27
|
+
harness_assess_params_schema: import("typebox").TObject<{
|
|
28
|
+
task: import("typebox").TString;
|
|
29
|
+
}>;
|
|
30
|
+
harness_assessment_submit_params_schema: import("typebox").TObject<{
|
|
31
|
+
task: import("typebox").TString;
|
|
32
|
+
evidence: import("typebox").TArray<import("typebox").TString>;
|
|
33
|
+
existing_primitives: import("typebox").TArray<import("typebox").TString>;
|
|
34
|
+
rejected_options: import("typebox").TArray<import("typebox").TString>;
|
|
35
|
+
smallest_vertical_slice: import("typebox").TString;
|
|
36
|
+
recommendation: import("typebox").TUnion<[import("typebox").TLiteral<"harness">, import("typebox").TLiteral<"direct">, import("typebox").TLiteral<"reject">]>;
|
|
37
|
+
proposed_contract: import("typebox").TOptional<import("typebox").TObject<{
|
|
38
|
+
task: import("typebox").TString;
|
|
39
|
+
slug: import("typebox").TOptional<import("typebox").TString>;
|
|
40
|
+
cwd: import("typebox").TOptional<import("typebox").TString>;
|
|
41
|
+
allowed_paths: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
42
|
+
forbidden_paths: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
43
|
+
validation_commands: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
44
|
+
forbidden_commands: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
45
|
+
allow_test_changes: import("typebox").TOptional<import("typebox").TBoolean>;
|
|
46
|
+
escalation_rules: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
47
|
+
planner_model: import("typebox").TOptional<import("typebox").TString>;
|
|
48
|
+
planner_thinking: import("typebox").TOptional<import("typebox").TUnion<[import("typebox").TLiteral<"off">, import("typebox").TLiteral<"minimal">, import("typebox").TLiteral<"low">, import("typebox").TLiteral<"medium">, import("typebox").TLiteral<"high">, import("typebox").TLiteral<"xhigh">]>>;
|
|
49
|
+
executor_model: import("typebox").TOptional<import("typebox").TString>;
|
|
50
|
+
executor_thinking: import("typebox").TOptional<import("typebox").TUnion<[import("typebox").TLiteral<"off">, import("typebox").TLiteral<"minimal">, import("typebox").TLiteral<"low">, import("typebox").TLiteral<"medium">, import("typebox").TLiteral<"high">, import("typebox").TLiteral<"xhigh">]>>;
|
|
51
|
+
reviewer_model: import("typebox").TOptional<import("typebox").TString>;
|
|
52
|
+
reviewer_thinking: import("typebox").TOptional<import("typebox").TUnion<[import("typebox").TLiteral<"off">, import("typebox").TLiteral<"minimal">, import("typebox").TLiteral<"low">, import("typebox").TLiteral<"medium">, import("typebox").TLiteral<"high">, import("typebox").TLiteral<"xhigh">]>>;
|
|
53
|
+
}>>;
|
|
54
|
+
}>;
|
|
25
55
|
harness_create_params_schema: import("typebox").TObject<{
|
|
26
56
|
task: import("typebox").TString;
|
|
27
57
|
slug: import("typebox").TOptional<import("typebox").TString>;
|
|
@@ -31,6 +61,7 @@ export declare const testing: {
|
|
|
31
61
|
validation_commands: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
32
62
|
forbidden_commands: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
33
63
|
allow_test_changes: import("typebox").TOptional<import("typebox").TBoolean>;
|
|
64
|
+
escalation_rules: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
34
65
|
planner_model: import("typebox").TOptional<import("typebox").TString>;
|
|
35
66
|
planner_thinking: import("typebox").TOptional<import("typebox").TUnion<[import("typebox").TLiteral<"off">, import("typebox").TLiteral<"minimal">, import("typebox").TLiteral<"low">, import("typebox").TLiteral<"medium">, import("typebox").TLiteral<"high">, import("typebox").TLiteral<"xhigh">]>>;
|
|
36
67
|
executor_model: import("typebox").TOptional<import("typebox").TString>;
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { harness_assess_params_schema, harness_assessment_submit_params_schema, } from './assessment.js';
|
|
1
2
|
import { harness_amend_params_schema, harness_create_params_schema, harness_read_params_schema, harness_update_params_schema, } from './schema.js';
|
|
3
|
+
export { assessment_active, assessment_context, assessment_tool_names, check_assessment_command, create_assessment_state, format_assessment_record, harness_assess_params_schema, HARNESS_ASSESSMENT_CUSTOM_TYPE, harness_assessment_submit_params_schema, is_assessment_tool_allowed, submit_assessment_record, } from './assessment.js';
|
|
2
4
|
export { check_command_allowed, check_path_allowed, } from './enforcement/policy.js';
|
|
3
5
|
export { default, should_inject_harness_prompt, } from './extension.js';
|
|
4
6
|
export { HARNESS_SYSTEM_PROMPT } from './prompt.js';
|
|
@@ -7,6 +9,8 @@ export { collect_harness_outcome, render_outcome_markdown, write_outcome_artifac
|
|
|
7
9
|
export { DEFAULT_FORBIDDEN_COMMANDS, harness_amend_params_schema, harness_create_params_schema, HARNESS_CUSTOM_TYPE, harness_read_params_schema, harness_update_params_schema, HARNESS_VERSION, thinking_levels_schema, } from './schema.js';
|
|
8
10
|
export const testing = {
|
|
9
11
|
harness_amend_params_schema,
|
|
12
|
+
harness_assess_params_schema,
|
|
13
|
+
harness_assessment_submit_params_schema,
|
|
10
14
|
harness_create_params_schema,
|
|
11
15
|
harness_read_params_schema,
|
|
12
16
|
harness_update_params_schema,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,qBAAqB,EACrB,kBAAkB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,OAAO,EACP,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,mBAAmB,EACnB,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,sBAAsB,GACtB,MAAM,aAAa,CAAC;AAiBrB,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,2BAA2B;IAC3B,4BAA4B;IAC5B,0BAA0B;IAC1B,4BAA4B;CAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,4BAA4B,EAC5B,uCAAuC,GACvC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,8BAA8B,EAC9B,uCAAuC,EACvC,0BAA0B,EAC1B,wBAAwB,GACxB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EACN,qBAAqB,EACrB,kBAAkB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,OAAO,EACP,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,mBAAmB,EACnB,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,sBAAsB,GACtB,MAAM,aAAa,CAAC;AAiBrB,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,2BAA2B;IAC3B,4BAA4B;IAC5B,uCAAuC;IACvC,4BAA4B;IAC5B,0BAA0B;IAC1B,4BAA4B;CAC5B,CAAC"}
|
package/dist/prompt.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const HARNESS_SYSTEM_PROMPT = "## my-pi harness workflow\n\
|
|
1
|
+
export declare const HARNESS_SYSTEM_PROMPT = "## my-pi harness workflow\n\nUse a harness when a task benefits from an enforceable execution contract because it has material risk, unresolved scope, destructive effects, or complex coordination. Use the normal direct workflow for bounded, low-risk changes that standard validation can verify, such as documentation or copy edits, focused single-file fixes, configuration or metadata updates, test expectation changes, formatting, and reviewed commit or push follow-ups. Broad uncertain refactors, migrations, deployments, risky releases, external side effects, and explicit user requests are assessment candidates.\n\nBefore adopting candidate capabilities or creating a harness, enter read-only assessment with harness_assess. Establish repository evidence, existing primitives, rejected options, and the smallest useful vertical slice. Then submit one recommendation with harness_assessment_submit. Direct user approval is required before repository mutation resumes or a harness is created. An unapproved harness_create call is blocked and starts assessment. The user can also enter this flow with /assess or /harness create.\n\nAfter approval, use direct work for a bounded vertical slice or the created harness for constrained execution. A harness is ephemeral /tmp control state, not a worktree. Its outer policy is runtime-owned; its inner scaffold is amendable with harness_amend when evidence changes within the approved capability. New capabilities, architecture decisions, or outer-policy expansion require assessment instead of silent scope growth. Completion seals the run for the current turn. A terminal harness automatically deactivates on the next direct user turn or session startup. Use /harness clear only to abandon a non-terminal run.";
|
package/dist/prompt.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export const HARNESS_SYSTEM_PROMPT = `## my-pi harness workflow
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Use a harness when a task benefits from an enforceable execution contract because it has material risk, unresolved scope, destructive effects, or complex coordination. Use the normal direct workflow for bounded, low-risk changes that standard validation can verify, such as documentation or copy edits, focused single-file fixes, configuration or metadata updates, test expectation changes, formatting, and reviewed commit or push follow-ups. Broad uncertain refactors, migrations, deployments, risky releases, external side effects, and explicit user requests are assessment candidates.
|
|
4
|
+
|
|
5
|
+
Before adopting candidate capabilities or creating a harness, enter read-only assessment with harness_assess. Establish repository evidence, existing primitives, rejected options, and the smallest useful vertical slice. Then submit one recommendation with harness_assessment_submit. Direct user approval is required before repository mutation resumes or a harness is created. An unapproved harness_create call is blocked and starts assessment. The user can also enter this flow with /assess or /harness create.
|
|
6
|
+
|
|
7
|
+
After approval, use direct work for a bounded vertical slice or the created harness for constrained execution. A harness is ephemeral /tmp control state, not a worktree. Its outer policy is runtime-owned; its inner scaffold is amendable with harness_amend when evidence changes within the approved capability. New capabilities, architecture decisions, or outer-policy expansion require assessment instead of silent scope growth. Completion seals the run for the current turn. A terminal harness automatically deactivates on the next direct user turn or session startup. Use /harness clear only to abandon a non-terminal run.`;
|
|
4
8
|
//# sourceMappingURL=prompt.js.map
|
package/dist/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;inBAM4kB,CAAC"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -78,7 +78,7 @@ export function create_harness_runtime(params, default_cwd) {
|
|
|
78
78
|
allowed_paths: params.allowed_paths ?? ['.'],
|
|
79
79
|
validation_commands: params.validation_commands ?? [],
|
|
80
80
|
allow_test_changes: params.allow_test_changes ?? false,
|
|
81
|
-
escalation_rules: [
|
|
81
|
+
escalation_rules: params.escalation_rules ?? [
|
|
82
82
|
'Required context contradicts the active scaffold or TASK.md.',
|
|
83
83
|
'Implementation needs edits outside scaffold.allowed_paths.',
|
|
84
84
|
'Validation requires weakening tests or changing public behavior outside the scaffold.',
|