@spences10/pi-harness 0.0.11 → 0.1.1

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/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} using the execute-harness skill. Harness approval does not authorize Factory; use Factory only after a direct user request to evaluate it.`,
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} using the execute-harness skill. Harness approval does not authorize Factory; use Factory only after a direct user request to evaluate it.`,
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: 'Create, use, run, review, and inspect ephemeral /tmp task harnesses',
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
- pi.sendUserMessage(`Use the create-harness skill to build a complete /tmp my-pi harness for this task. Use harness_create after context gathering. If the team tool is available, also create or reuse a team and add a team task whose description includes the harness directory.\n\n${rest}`);
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') {
@@ -90,7 +321,7 @@ export default async function harness(pi) {
90
321
  return;
91
322
  }
92
323
  set_active_harness(harness_dir, ctx);
93
- pi.sendUserMessage(`Use the execute-harness skill to run this harness until validation completes: ${harness_dir}. If the team tool is available, create or reuse a team and create a task for this harness. Use one mutating teammate only when useful; use a worktree only when isolation and merge ownership are explicit. Then inspect team status/results before reporting.`);
324
+ pi.sendUserMessage(`Use the execute-harness skill to run this harness until validation completes: ${harness_dir}. Harness execution does not authorize Factory; use Factory only after a direct user request to evaluate it. If the team tool is available, create or reuse a team and create a task for this harness. Use one mutating teammate only when useful; use a worktree only when isolation and merge ownership are explicit. Then inspect team status/results before reporting.`);
94
325
  return;
95
326
  }
96
327
  if (command === 'review') {
@@ -106,32 +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: 'Create an ephemeral /tmp my-pi task harness with machine-readable contract, prompts, scripts, logs, and status.',
113
- promptSnippet: 'Create /tmp task harnesses for constrained agent execution',
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 when a task benefits from an enforceable execution contract because it has material risk, unresolved scope, destructive effects, or complex coordination.',
116
- 'Use the normal direct workflow for bounded, low-risk changes covered by standard validation, including routine docs or copy edits, focused single-file fixes, config or metadata updates, test expectation changes, formatting, and reviewed commit or push follow-ups.',
117
- 'Broad uncertain refactors, migrations, deployments, risky releases, external side effects, and explicit user requests are good harness candidates.',
118
- '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.',
119
380
  ],
120
381
  parameters: harness_create_params_schema,
121
382
  async execute(_tool_call_id, params, _signal, _on_update, ctx) {
122
- const { harness_dir, contract } = create_harness_runtime(params, ctx.cwd);
123
- set_active_harness(harness_dir, ctx);
124
- 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}.`);
125
385
  },
126
386
  });
127
387
  pi.registerTool({
128
388
  name: 'harness_amend',
129
389
  label: 'Amend Harness Scaffold',
130
390
  description: 'Amend the active execution scaffold with an audited version change. Cannot weaken the outer runtime policy.',
131
- promptSnippet: 'Amend task scope, validation, test policy, or model strategy when user direction or evidence changes',
391
+ promptSnippet: 'Amend bounded task scope, validation, test policy, or model strategy when evidence changes',
132
392
  promptGuidelines: [
133
- 'Use harness_amend for legitimate changes to the inner scaffold instead of treating the active harness as immutable.',
134
- 'Outer policy fields such as cwd, forbidden paths, forbidden commands, and tool availability cannot be amended.',
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.',
135
395
  ],
136
396
  parameters: harness_amend_params_schema,
137
397
  async execute(_tool_call_id, params, _signal, _on_update, ctx) {
@@ -162,11 +422,15 @@ export default async function harness(pi) {
162
422
  });
163
423
  pi.on('session_start', async (_event, ctx) => {
164
424
  active_harness_dir = restore_active_harness(ctx);
425
+ assessment_state = restore_assessment(ctx);
165
426
  if (is_terminal_harness(active_harness_dir)) {
166
427
  set_active_harness(undefined, ctx);
167
- return;
428
+ }
429
+ if (assessment_active(assessment_state)) {
430
+ pi.setActiveTools(assessment_tool_names(pi.getActiveTools()));
168
431
  }
169
432
  update_harness_ui(ctx, active_harness_dir);
433
+ update_assessment_ui(ctx, assessment_state);
170
434
  });
171
435
  pi.on('input', async (event, ctx) => {
172
436
  if (event.source !== 'extension' &&
@@ -179,13 +443,42 @@ export default async function harness(pi) {
179
443
  if (should_inject_harness_prompt(event)) {
180
444
  system_prompt = `${system_prompt}\n\n${HARNESS_SYSTEM_PROMPT}`;
181
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
+ }
182
450
  if (active_harness_dir &&
183
451
  existsSync(harness_paths(active_harness_dir).contract)) {
184
452
  system_prompt = `${system_prompt}\n\n${active_harness_context(active_harness_dir)}`;
185
453
  }
186
454
  return { systemPrompt: system_prompt };
187
455
  });
188
- 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
+ }
189
482
  if (!active_harness_dir ||
190
483
  !existsSync(harness_paths(active_harness_dir).contract)) {
191
484
  return;
@@ -207,8 +500,12 @@ export default async function harness(pi) {
207
500
  return { block: true, reason: result.reason };
208
501
  }
209
502
  });
503
+ pi.on('agent_end', async (_event, ctx) => {
504
+ await prompt_for_assessment_decision(ctx);
505
+ });
210
506
  pi.on('session_shutdown', async (_event, ctx) => {
211
507
  ctx.ui.setStatus('harness', undefined);
508
+ ctx.ui.setStatus('harness-assessment', undefined);
212
509
  ctx.ui.setWidget('harness', undefined);
213
510
  });
214
511
  }
@@ -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\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 good harness candidates. A harness is an ephemeral /tmp runtime with harness.json, SYSTEM.md, TASK.md, status.json, validation scripts, logs, and enforcement rules; it is control state, not a worktree and does not own repository changes. Its outer policy is runtime-owned; its versioned inner scaffold is an amendable execution plan subordinate to system, developer, and current user instructions. Use the bundled create-harness skill plus harness_create to build it, harness_amend when legitimate scope or strategy changes, then execute until validation and review are complete. Completion seals the run and its evidence for the current turn; do not create a replacement harness to escape it. A terminal harness automatically deactivates on the next direct user turn or session startup. Use /harness clear only to abandon a non-terminal run.";
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 execute-harness skill for constrained execution. Harness approval does not authorize Factory; use Factory only after a direct user request to evaluate it. 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
- 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 good harness candidates. A harness is an ephemeral /tmp runtime with harness.json, SYSTEM.md, TASK.md, status.json, validation scripts, logs, and enforcement rules; it is control state, not a worktree and does not own repository changes. Its outer policy is runtime-owned; its versioned inner scaffold is an amendable execution plan subordinate to system, developer, and current user instructions. Use the bundled create-harness skill plus harness_create to build it, harness_amend when legitimate scope or strategy changes, then execute until validation and review are complete. Completion seals the run and its evidence for the current turn; do not create a replacement harness to escape it. A terminal harness automatically deactivates on the next direct user turn or session startup. Use /harness clear only to abandon a non-terminal run.`;
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 execute-harness skill for constrained execution. Harness approval does not authorize Factory; use Factory only after a direct user request to evaluate it. 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
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;;g4CAE21C,CAAC"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;iuBAM4rB,CAAC"}
@@ -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.',