greprag 5.53.1 → 5.55.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/dist/codex-steering.js +33 -7
- package/dist/codex-steering.js.map +1 -1
- package/dist/commands/codex-delivery.d.ts +2 -1
- package/dist/commands/codex-delivery.js +130 -7
- package/dist/commands/codex-delivery.js.map +1 -1
- package/dist/commands/codex-doctor.js +28 -11
- package/dist/commands/codex-doctor.js.map +1 -1
- package/dist/commands/codex-supervisor.d.ts +6 -1
- package/dist/commands/codex-supervisor.js +10 -4
- package/dist/commands/codex-supervisor.js.map +1 -1
- package/dist/commands/codex-wake-test.d.ts +19 -0
- package/dist/commands/codex-wake-test.js +34 -0
- package/dist/commands/codex-wake-test.js.map +1 -1
- package/dist/commands/codex.js +19 -3
- package/dist/commands/codex.js.map +1 -1
- package/dist/commands/inbox-primer-reminder.js +2 -2
- package/dist/commands/inbox-primer-reminder.js.map +1 -1
- package/dist/commands/init.js +14 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mechanic-live.js +3 -1
- package/dist/commands/mechanic-live.js.map +1 -1
- package/dist/commands/mechanic.js +4 -3
- package/dist/commands/mechanic.js.map +1 -1
- package/dist/commands/opencode-interrupt.d.ts +1 -0
- package/dist/commands/opencode-interrupt.js +2 -0
- package/dist/commands/opencode-interrupt.js.map +1 -1
- package/dist/commands/procedure-reminder.d.ts +8 -0
- package/dist/commands/procedure-reminder.js +27 -0
- package/dist/commands/procedure-reminder.js.map +1 -0
- package/dist/commands/procedure.js +311 -12
- package/dist/commands/procedure.js.map +1 -1
- package/dist/commands/reminder-registry.js +2 -0
- package/dist/commands/reminder-registry.js.map +1 -1
- package/dist/commands/reminder-types.d.ts +4 -0
- package/dist/commands/ship-through-gate.d.ts +16 -0
- package/dist/commands/ship-through-gate.js +43 -0
- package/dist/commands/ship-through-gate.js.map +1 -0
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.js +2 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/hook.js +42 -1
- package/dist/hook.js.map +1 -1
- package/dist/mechanic-friction.d.ts +7 -1
- package/dist/mechanic-friction.js +6 -3
- package/dist/mechanic-friction.js.map +1 -1
- package/dist/opencode-plugin.bundle.js +192 -54
- package/dist/opencode-plugin.js +9 -0
- package/dist/opencode-plugin.js.map +1 -1
- package/dist/procedure-run.d.ts +51 -0
- package/dist/procedure-run.js +186 -0
- package/dist/procedure-run.js.map +1 -0
- package/dist/procedure.d.ts +71 -1
- package/dist/procedure.js +168 -6
- package/dist/procedure.js.map +1 -1
- package/package.json +1 -1
- package/skill/greprag/SKILL.md +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** Procedure execution record — definition/install/run split from
|
|
2
|
+
* adr/procedure-install-control-plane.md. One latest run per project+procedure.
|
|
3
|
+
* Review evidence is bound to a content fingerprint, so changing the artifact
|
|
4
|
+
* invalidates old review without weakening the durable install. */
|
|
5
|
+
import type { Procedure, ProcedureInstall } from './procedure';
|
|
6
|
+
export type ProcedureCheckpointKind = 'review' | 'checks' | 'commit' | 'deploy' | 'verify';
|
|
7
|
+
export type ReviewVia = 'peer' | 'local';
|
|
8
|
+
export interface ProcedureCheckpoint {
|
|
9
|
+
kind: ProcedureCheckpointKind;
|
|
10
|
+
at: string;
|
|
11
|
+
artifactFingerprint: string;
|
|
12
|
+
via?: ReviewVia;
|
|
13
|
+
ref?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ProcedureRun {
|
|
16
|
+
runId: string;
|
|
17
|
+
projectId: string;
|
|
18
|
+
procedureId: string;
|
|
19
|
+
definitionVersion: number;
|
|
20
|
+
installRevision: string;
|
|
21
|
+
trigger: string;
|
|
22
|
+
startedAt: string;
|
|
23
|
+
artifactFingerprint: string;
|
|
24
|
+
checkpoints: ProcedureCheckpoint[];
|
|
25
|
+
outcome?: 'succeeded' | 'failed' | 'abandoned' | 'stale';
|
|
26
|
+
endpointAt?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function procedureRunPath(projectId: string, procedureId: string): string;
|
|
29
|
+
export declare function installRevision(install: ProcedureInstall): string;
|
|
30
|
+
/** Fingerprint the resulting worktree CONTENT, independent of whether the same
|
|
31
|
+
* bytes are staged or committed. Tracked + untracked/non-ignored files are
|
|
32
|
+
* sorted; deleted tracked files contribute a deletion marker. */
|
|
33
|
+
export declare function currentArtifactFingerprint(cwd: string): string | null;
|
|
34
|
+
export declare function readProcedureRun(projectId: string, procedureId: string): ProcedureRun | null;
|
|
35
|
+
export declare function writeProcedureRun(run: ProcedureRun): void;
|
|
36
|
+
export declare function beginProcedureRun(params: {
|
|
37
|
+
projectId: string;
|
|
38
|
+
procedure: Procedure;
|
|
39
|
+
install: ProcedureInstall;
|
|
40
|
+
cwd: string;
|
|
41
|
+
trigger?: string;
|
|
42
|
+
}): ProcedureRun;
|
|
43
|
+
export declare function attestProcedureCheckpoint(params: {
|
|
44
|
+
run: ProcedureRun;
|
|
45
|
+
kind: ProcedureCheckpointKind;
|
|
46
|
+
cwd: string;
|
|
47
|
+
via?: ReviewVia;
|
|
48
|
+
ref?: string;
|
|
49
|
+
}): ProcedureRun;
|
|
50
|
+
export declare function completeProcedureRun(run: ProcedureRun, outcome: NonNullable<ProcedureRun['outcome']>): ProcedureRun;
|
|
51
|
+
export declare function currentReviewEvidence(run: ProcedureRun | null, fingerprint: string, strategy: string): ProcedureCheckpoint | null;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** Procedure execution record — definition/install/run split from
|
|
3
|
+
* adr/procedure-install-control-plane.md. One latest run per project+procedure.
|
|
4
|
+
* Review evidence is bound to a content fingerprint, so changing the artifact
|
|
5
|
+
* invalidates old review without weakening the durable install. */
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.procedureRunPath = procedureRunPath;
|
|
41
|
+
exports.installRevision = installRevision;
|
|
42
|
+
exports.currentArtifactFingerprint = currentArtifactFingerprint;
|
|
43
|
+
exports.readProcedureRun = readProcedureRun;
|
|
44
|
+
exports.writeProcedureRun = writeProcedureRun;
|
|
45
|
+
exports.beginProcedureRun = beginProcedureRun;
|
|
46
|
+
exports.attestProcedureCheckpoint = attestProcedureCheckpoint;
|
|
47
|
+
exports.completeProcedureRun = completeProcedureRun;
|
|
48
|
+
exports.currentReviewEvidence = currentReviewEvidence;
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const crypto = __importStar(require("crypto"));
|
|
52
|
+
const child_process_1 = require("child_process");
|
|
53
|
+
function stateDir() {
|
|
54
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
55
|
+
return path.join(home, '.greprag', 'state');
|
|
56
|
+
}
|
|
57
|
+
function safeId(id) {
|
|
58
|
+
return id.replace(/[^a-zA-Z0-9._-]+/g, '-');
|
|
59
|
+
}
|
|
60
|
+
function procedureRunPath(projectId, procedureId) {
|
|
61
|
+
return path.join(stateDir(), `procedure-run-${safeId(projectId)}-${safeId(procedureId)}.json`);
|
|
62
|
+
}
|
|
63
|
+
function installRevision(install) {
|
|
64
|
+
return crypto.createHash('sha256').update(JSON.stringify({
|
|
65
|
+
procedureId: install.procedureId,
|
|
66
|
+
definitionVersion: install.definitionVersion,
|
|
67
|
+
state: install.state,
|
|
68
|
+
autonomy: install.autonomy,
|
|
69
|
+
authority: install.authority,
|
|
70
|
+
settings: install.settings,
|
|
71
|
+
ratifiedAt: install.ratifiedAt,
|
|
72
|
+
})).digest('hex').slice(0, 16);
|
|
73
|
+
}
|
|
74
|
+
/** Fingerprint the resulting worktree CONTENT, independent of whether the same
|
|
75
|
+
* bytes are staged or committed. Tracked + untracked/non-ignored files are
|
|
76
|
+
* sorted; deleted tracked files contribute a deletion marker. */
|
|
77
|
+
function currentArtifactFingerprint(cwd) {
|
|
78
|
+
try {
|
|
79
|
+
const root = (0, child_process_1.execFileSync)('git', ['rev-parse', '--show-toplevel'], {
|
|
80
|
+
cwd, encoding: 'utf8', windowsHide: true,
|
|
81
|
+
}).trim();
|
|
82
|
+
if (!root)
|
|
83
|
+
return null;
|
|
84
|
+
const raw = (0, child_process_1.execFileSync)('git', ['ls-files', '-co', '--exclude-standard', '-z'], {
|
|
85
|
+
cwd: root, encoding: 'buffer', windowsHide: true, maxBuffer: 20 * 1024 * 1024,
|
|
86
|
+
});
|
|
87
|
+
const files = raw.toString('utf8').split('\0').filter(Boolean).sort();
|
|
88
|
+
const digest = crypto.createHash('sha256');
|
|
89
|
+
for (const rel of files) {
|
|
90
|
+
const abs = path.join(root, rel);
|
|
91
|
+
digest.update(rel.replace(/\\/g, '/')).update('\0');
|
|
92
|
+
try {
|
|
93
|
+
const stat = fs.statSync(abs);
|
|
94
|
+
if (!stat.isFile()) {
|
|
95
|
+
digest.update('<non-file>\0');
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
digest.update(crypto.createHash('sha256').update(fs.readFileSync(abs)).digest('hex')).update('\0');
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
digest.update('<deleted>\0');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return digest.digest('hex');
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function readProcedureRun(projectId, procedureId) {
|
|
111
|
+
try {
|
|
112
|
+
const parsed = JSON.parse(fs.readFileSync(procedureRunPath(projectId, procedureId), 'utf8'));
|
|
113
|
+
if (!parsed?.runId || parsed.projectId !== projectId || parsed.procedureId !== procedureId)
|
|
114
|
+
return null;
|
|
115
|
+
if (!Array.isArray(parsed.checkpoints))
|
|
116
|
+
return null;
|
|
117
|
+
return parsed;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function writeProcedureRun(run) {
|
|
124
|
+
const file = procedureRunPath(run.projectId, run.procedureId);
|
|
125
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
126
|
+
fs.writeFileSync(file, JSON.stringify(run, null, 2) + '\n');
|
|
127
|
+
}
|
|
128
|
+
function beginProcedureRun(params) {
|
|
129
|
+
const fingerprint = currentArtifactFingerprint(params.cwd);
|
|
130
|
+
if (!fingerprint)
|
|
131
|
+
throw new Error('cannot fingerprint this project worktree');
|
|
132
|
+
const now = new Date().toISOString();
|
|
133
|
+
const run = {
|
|
134
|
+
runId: crypto.randomUUID(),
|
|
135
|
+
projectId: params.projectId,
|
|
136
|
+
procedureId: params.procedure.verb,
|
|
137
|
+
definitionVersion: params.procedure.definitionVersion ?? 1,
|
|
138
|
+
installRevision: installRevision(params.install),
|
|
139
|
+
trigger: params.trigger || 'operator-requested change/build task',
|
|
140
|
+
startedAt: now,
|
|
141
|
+
artifactFingerprint: fingerprint,
|
|
142
|
+
checkpoints: [],
|
|
143
|
+
};
|
|
144
|
+
writeProcedureRun(run);
|
|
145
|
+
return run;
|
|
146
|
+
}
|
|
147
|
+
function attestProcedureCheckpoint(params) {
|
|
148
|
+
const fingerprint = currentArtifactFingerprint(params.cwd);
|
|
149
|
+
if (!fingerprint)
|
|
150
|
+
throw new Error('cannot fingerprint this project worktree');
|
|
151
|
+
if (params.kind === 'review' && !params.via)
|
|
152
|
+
throw new Error('review attestation requires --via peer|local');
|
|
153
|
+
const checkpoint = {
|
|
154
|
+
kind: params.kind,
|
|
155
|
+
at: new Date().toISOString(),
|
|
156
|
+
artifactFingerprint: fingerprint,
|
|
157
|
+
...(params.via ? { via: params.via } : {}),
|
|
158
|
+
...(params.ref ? { ref: params.ref } : {}),
|
|
159
|
+
};
|
|
160
|
+
const next = {
|
|
161
|
+
...params.run,
|
|
162
|
+
artifactFingerprint: fingerprint,
|
|
163
|
+
checkpoints: [...params.run.checkpoints, checkpoint],
|
|
164
|
+
};
|
|
165
|
+
writeProcedureRun(next);
|
|
166
|
+
return next;
|
|
167
|
+
}
|
|
168
|
+
function completeProcedureRun(run, outcome) {
|
|
169
|
+
const next = { ...run, outcome, endpointAt: new Date().toISOString() };
|
|
170
|
+
writeProcedureRun(next);
|
|
171
|
+
return next;
|
|
172
|
+
}
|
|
173
|
+
function currentReviewEvidence(run, fingerprint, strategy) {
|
|
174
|
+
if (!run || run.outcome)
|
|
175
|
+
return null;
|
|
176
|
+
const candidates = run.checkpoints.filter(c => c.kind === 'review' && c.artifactFingerprint === fingerprint);
|
|
177
|
+
const found = [...candidates].reverse().find(c => {
|
|
178
|
+
if (strategy === 'peer-required')
|
|
179
|
+
return c.via === 'peer';
|
|
180
|
+
if (strategy === 'local')
|
|
181
|
+
return c.via === 'local';
|
|
182
|
+
return c.via === 'peer' || c.via === 'local';
|
|
183
|
+
});
|
|
184
|
+
return found ?? null;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=procedure-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"procedure-run.js","sourceRoot":"","sources":["../src/procedure-run.ts"],"names":[],"mappings":"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"}
|
package/dist/procedure.d.ts
CHANGED
|
@@ -23,6 +23,29 @@
|
|
|
23
23
|
* confirmed — a clean injected REPLAY proved the recipe.
|
|
24
24
|
* stale — injection floundered → re-enter LEARN (overwrite). */
|
|
25
25
|
export type ProcedureStatus = 'seeded' | 'discovered' | 'learned' | 'confirmed' | 'stale';
|
|
26
|
+
export type ProcedureInstallState = 'disabled' | 'shadow' | 'active';
|
|
27
|
+
export type ProcedureAutonomy = 'advise' | 'execute';
|
|
28
|
+
export type ProcedureAuthority = 'fresh' | 'standing';
|
|
29
|
+
export type ProcedureSettingValue = string | number | boolean | null;
|
|
30
|
+
export interface ProcedureSettingSpec {
|
|
31
|
+
type: 'string' | 'number' | 'boolean';
|
|
32
|
+
default: ProcedureSettingValue;
|
|
33
|
+
enum?: ProcedureSettingValue[];
|
|
34
|
+
/** Changing this setting invalidates an active standing-authority ratification. */
|
|
35
|
+
riskBearing?: boolean;
|
|
36
|
+
description?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ProcedureInstall {
|
|
39
|
+
procedureId: string;
|
|
40
|
+
definitionVersion: number;
|
|
41
|
+
state: ProcedureInstallState;
|
|
42
|
+
autonomy: ProcedureAutonomy;
|
|
43
|
+
authority: ProcedureAuthority;
|
|
44
|
+
settings: Record<string, ProcedureSettingValue>;
|
|
45
|
+
ratifiedBy?: 'operator';
|
|
46
|
+
ratifiedAt?: string;
|
|
47
|
+
updatedAt: string;
|
|
48
|
+
}
|
|
26
49
|
export interface Procedure {
|
|
27
50
|
/** Normalized intent key (one per repo). */
|
|
28
51
|
verb: string;
|
|
@@ -41,17 +64,32 @@ export interface Procedure {
|
|
|
41
64
|
* by the LEARN leg — the one failure you can't afford even once. */
|
|
42
65
|
destructive?: boolean;
|
|
43
66
|
updatedAt?: string;
|
|
67
|
+
/** Definition-owned install metadata (adr/procedure-install-control-plane.md). */
|
|
68
|
+
definitionVersion?: number;
|
|
69
|
+
settingsSchema?: Record<string, ProcedureSettingSpec>;
|
|
70
|
+
defaultInstall?: Pick<ProcedureInstall, 'autonomy' | 'authority'>;
|
|
71
|
+
announce?: {
|
|
72
|
+
summary: string;
|
|
73
|
+
reannounceOnCompact?: boolean;
|
|
74
|
+
};
|
|
75
|
+
risk?: {
|
|
76
|
+
maximumAutonomy: ProcedureAutonomy;
|
|
77
|
+
standingAuthorityAllowed: boolean;
|
|
78
|
+
authorityScope: string[];
|
|
79
|
+
};
|
|
44
80
|
}
|
|
45
81
|
export interface ProcedureStore {
|
|
46
82
|
version: string;
|
|
47
83
|
procedures: Procedure[];
|
|
84
|
+
/** Absent in v1 stores. Missing records preserve legacy active+advise+fresh. */
|
|
85
|
+
installs?: ProcedureInstall[];
|
|
48
86
|
}
|
|
49
87
|
export interface ProcedureMatch {
|
|
50
88
|
procedure: Procedure;
|
|
51
89
|
/** Which trigger phrase fired — for diagnostics / the dry-run `match` command. */
|
|
52
90
|
trigger: string;
|
|
53
91
|
}
|
|
54
|
-
export declare const PROCEDURE_STORE_VERSION = "
|
|
92
|
+
export declare const PROCEDURE_STORE_VERSION = "2";
|
|
55
93
|
/** Beside the matchset cache (guard.ts), keyed by project_id so it survives
|
|
56
94
|
* renames/worktrees and stays per-project. */
|
|
57
95
|
export declare function procedureStorePath(projectId: string): string;
|
|
@@ -59,6 +97,25 @@ export declare function procedureStorePath(projectId: string): string;
|
|
|
59
97
|
* fail-open, so a read error never blocks the hot path. */
|
|
60
98
|
export declare function readProcedureStore(projectId: string): ProcedureStore;
|
|
61
99
|
export declare function writeProcedureStore(projectId: string, store: ProcedureStore): void;
|
|
100
|
+
export declare function procedureId(proc: Pick<Procedure, 'verb'>): string;
|
|
101
|
+
export declare function explicitInstall(store: ProcedureStore, id: string): ProcedureInstall | null;
|
|
102
|
+
/** Effective install. Legacy stored procedures had no activation record and
|
|
103
|
+
* already injected, so they migrate logically as active+advise+fresh. A
|
|
104
|
+
* bundled definition not materialized in the store is disabled by default. */
|
|
105
|
+
export declare function effectiveInstall(store: ProcedureStore, proc: Procedure): ProcedureInstall;
|
|
106
|
+
export declare function defaultProcedureSettings(proc: Procedure): Record<string, ProcedureSettingValue>;
|
|
107
|
+
export declare function validateProcedureSettings(proc: Procedure, values: Record<string, ProcedureSettingValue>): {
|
|
108
|
+
ok: boolean;
|
|
109
|
+
errors: string[];
|
|
110
|
+
settings: Record<string, ProcedureSettingValue>;
|
|
111
|
+
};
|
|
112
|
+
export declare function validateProcedureInstall(proc: Procedure, candidate: Pick<ProcedureInstall, 'state' | 'autonomy' | 'authority' | 'settings'>): {
|
|
113
|
+
ok: boolean;
|
|
114
|
+
errors: string[];
|
|
115
|
+
settings: Record<string, ProcedureSettingValue>;
|
|
116
|
+
};
|
|
117
|
+
export declare function upsertProcedureInstall(store: ProcedureStore, install: ProcedureInstall): ProcedureStore;
|
|
118
|
+
export declare function removeProcedureInstall(store: ProcedureStore, id: string): ProcedureStore;
|
|
62
119
|
/** Insert-or-replace by verb. Destructive existing procedures are NOT silently
|
|
63
120
|
* downgraded: a learned/auto write can't overwrite a destructive=true seed
|
|
64
121
|
* (callers pass `force` for an explicit operator re-seed). Returns the store. */
|
|
@@ -75,6 +132,7 @@ export declare function intentSuppressed(promptLower: string, triggerLower: stri
|
|
|
75
132
|
* (the `match` dry-run uses it to explain a suppression). */
|
|
76
133
|
export declare function matchProcedure(prompt: string, store: ProcedureStore, opts?: {
|
|
77
134
|
ignoreIntentGuard?: boolean;
|
|
135
|
+
includeInactive?: boolean;
|
|
78
136
|
}): ProcedureMatch | null;
|
|
79
137
|
/** The additionalContext block injected at UserPromptSubmit when a procedure
|
|
80
138
|
* matches. Leads with the gate for destructive verbs (the guardrail is the
|
|
@@ -86,3 +144,15 @@ export declare function buildProcedureInjection(proc: Procedure): string;
|
|
|
86
144
|
* deploy = don't-ask, push = always-ask — is exactly what trips a learning
|
|
87
145
|
* dev; both gates ship on day one. `push` is destructive → seed-only. */
|
|
88
146
|
export declare const GIT_SEED_SET: Procedure[];
|
|
147
|
+
/** Bundled orchestration procedures. Unlike the legacy git seed set these are
|
|
148
|
+
* definitions, born DISABLED, and become agent-facing only through an
|
|
149
|
+
* operator-ratified ProcedureInstall. */
|
|
150
|
+
export declare const SHIP_THROUGH_PROCEDURE: Procedure;
|
|
151
|
+
export declare const BUILTIN_PROCEDURES: Procedure[];
|
|
152
|
+
/** Resolve a registered definition first (project override), then bundled. */
|
|
153
|
+
export declare function resolveProcedure(store: ProcedureStore, id: string): Procedure | null;
|
|
154
|
+
/** Definitions visible to the control plane: registered + bundled, de-duped by id. */
|
|
155
|
+
export declare function listProcedureDefinitions(store: ProcedureStore): Procedure[];
|
|
156
|
+
/** SessionStart summaries for active installs only. Legacy procedures do not
|
|
157
|
+
* announce unless their definition explicitly opts in. */
|
|
158
|
+
export declare function activeProcedureAnnounces(store: ProcedureStore): string[];
|
package/dist/procedure.js
CHANGED
|
@@ -50,18 +50,29 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
50
50
|
};
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
exports.GIT_SEED_SET = exports.PROCEDURE_STORE_VERSION = void 0;
|
|
53
|
+
exports.BUILTIN_PROCEDURES = exports.SHIP_THROUGH_PROCEDURE = exports.GIT_SEED_SET = exports.PROCEDURE_STORE_VERSION = void 0;
|
|
54
54
|
exports.procedureStorePath = procedureStorePath;
|
|
55
55
|
exports.readProcedureStore = readProcedureStore;
|
|
56
56
|
exports.writeProcedureStore = writeProcedureStore;
|
|
57
|
+
exports.procedureId = procedureId;
|
|
58
|
+
exports.explicitInstall = explicitInstall;
|
|
59
|
+
exports.effectiveInstall = effectiveInstall;
|
|
60
|
+
exports.defaultProcedureSettings = defaultProcedureSettings;
|
|
61
|
+
exports.validateProcedureSettings = validateProcedureSettings;
|
|
62
|
+
exports.validateProcedureInstall = validateProcedureInstall;
|
|
63
|
+
exports.upsertProcedureInstall = upsertProcedureInstall;
|
|
64
|
+
exports.removeProcedureInstall = removeProcedureInstall;
|
|
57
65
|
exports.upsertProcedure = upsertProcedure;
|
|
58
66
|
exports.removeProcedure = removeProcedure;
|
|
59
67
|
exports.intentSuppressed = intentSuppressed;
|
|
60
68
|
exports.matchProcedure = matchProcedure;
|
|
61
69
|
exports.buildProcedureInjection = buildProcedureInjection;
|
|
70
|
+
exports.resolveProcedure = resolveProcedure;
|
|
71
|
+
exports.listProcedureDefinitions = listProcedureDefinitions;
|
|
72
|
+
exports.activeProcedureAnnounces = activeProcedureAnnounces;
|
|
62
73
|
const path = __importStar(require("path"));
|
|
63
74
|
const fs = __importStar(require("fs"));
|
|
64
|
-
exports.PROCEDURE_STORE_VERSION = '
|
|
75
|
+
exports.PROCEDURE_STORE_VERSION = '2';
|
|
65
76
|
// ---------- Store I/O (local, hot-path) --------------------------------------
|
|
66
77
|
function stateDir() {
|
|
67
78
|
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
@@ -79,18 +90,98 @@ function readProcedureStore(projectId) {
|
|
|
79
90
|
const raw = fs.readFileSync(procedureStorePath(projectId), 'utf-8');
|
|
80
91
|
const parsed = JSON.parse(raw);
|
|
81
92
|
if (parsed && Array.isArray(parsed.procedures)) {
|
|
82
|
-
return {
|
|
93
|
+
return {
|
|
94
|
+
version: parsed.version || '1',
|
|
95
|
+
procedures: parsed.procedures,
|
|
96
|
+
installs: Array.isArray(parsed.installs) ? parsed.installs : [],
|
|
97
|
+
};
|
|
83
98
|
}
|
|
84
99
|
}
|
|
85
100
|
catch { /* missing / unreadable → empty */ }
|
|
86
|
-
return { version: exports.PROCEDURE_STORE_VERSION, procedures: [] };
|
|
101
|
+
return { version: exports.PROCEDURE_STORE_VERSION, procedures: [], installs: [] };
|
|
87
102
|
}
|
|
88
103
|
function writeProcedureStore(projectId, store) {
|
|
89
104
|
const file = procedureStorePath(projectId);
|
|
90
105
|
const dir = path.dirname(file);
|
|
91
106
|
if (!fs.existsSync(dir))
|
|
92
107
|
fs.mkdirSync(dir, { recursive: true });
|
|
93
|
-
fs.writeFileSync(file, JSON.stringify(
|
|
108
|
+
fs.writeFileSync(file, JSON.stringify({
|
|
109
|
+
version: exports.PROCEDURE_STORE_VERSION,
|
|
110
|
+
procedures: store.procedures,
|
|
111
|
+
installs: store.installs ?? [],
|
|
112
|
+
}, null, 2) + '\n');
|
|
113
|
+
}
|
|
114
|
+
function procedureId(proc) {
|
|
115
|
+
return proc.verb;
|
|
116
|
+
}
|
|
117
|
+
function explicitInstall(store, id) {
|
|
118
|
+
return (store.installs ?? []).find(i => i.procedureId === id) ?? null;
|
|
119
|
+
}
|
|
120
|
+
/** Effective install. Legacy stored procedures had no activation record and
|
|
121
|
+
* already injected, so they migrate logically as active+advise+fresh. A
|
|
122
|
+
* bundled definition not materialized in the store is disabled by default. */
|
|
123
|
+
function effectiveInstall(store, proc) {
|
|
124
|
+
const id = procedureId(proc);
|
|
125
|
+
const found = explicitInstall(store, id);
|
|
126
|
+
if (found)
|
|
127
|
+
return found;
|
|
128
|
+
const legacyStored = store.procedures.some(p => procedureId(p) === id);
|
|
129
|
+
return {
|
|
130
|
+
procedureId: id,
|
|
131
|
+
definitionVersion: proc.definitionVersion ?? 1,
|
|
132
|
+
state: legacyStored ? 'active' : 'disabled',
|
|
133
|
+
autonomy: legacyStored ? 'advise' : (proc.defaultInstall?.autonomy ?? 'advise'),
|
|
134
|
+
authority: legacyStored ? 'fresh' : (proc.defaultInstall?.authority ?? 'fresh'),
|
|
135
|
+
settings: defaultProcedureSettings(proc),
|
|
136
|
+
updatedAt: proc.updatedAt ?? '',
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function defaultProcedureSettings(proc) {
|
|
140
|
+
return Object.fromEntries(Object.entries(proc.settingsSchema ?? {}).map(([key, spec]) => [key, spec.default]));
|
|
141
|
+
}
|
|
142
|
+
function validateProcedureSettings(proc, values) {
|
|
143
|
+
const schema = proc.settingsSchema ?? {};
|
|
144
|
+
const settings = { ...defaultProcedureSettings(proc), ...values };
|
|
145
|
+
const errors = [];
|
|
146
|
+
for (const key of Object.keys(values)) {
|
|
147
|
+
if (!schema[key])
|
|
148
|
+
errors.push(`unknown setting "${key}"`);
|
|
149
|
+
}
|
|
150
|
+
for (const [key, spec] of Object.entries(schema)) {
|
|
151
|
+
const value = settings[key];
|
|
152
|
+
if (spec.type === 'string' && typeof value !== 'string')
|
|
153
|
+
errors.push(`${key} must be a string`);
|
|
154
|
+
if (spec.type === 'number' && typeof value !== 'number')
|
|
155
|
+
errors.push(`${key} must be a number`);
|
|
156
|
+
if (spec.type === 'boolean' && typeof value !== 'boolean')
|
|
157
|
+
errors.push(`${key} must be a boolean`);
|
|
158
|
+
if (spec.enum && !spec.enum.some(v => v === value)) {
|
|
159
|
+
errors.push(`${key} must be one of: ${spec.enum.join(', ')}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { ok: errors.length === 0, errors, settings };
|
|
163
|
+
}
|
|
164
|
+
function validateProcedureInstall(proc, candidate) {
|
|
165
|
+
const checked = validateProcedureSettings(proc, candidate.settings);
|
|
166
|
+
const errors = [...checked.errors];
|
|
167
|
+
const risk = proc.risk;
|
|
168
|
+
if (candidate.autonomy === 'execute' && risk?.maximumAutonomy !== 'execute') {
|
|
169
|
+
errors.push('definition does not allow execute autonomy');
|
|
170
|
+
}
|
|
171
|
+
if (candidate.authority === 'standing' && risk?.standingAuthorityAllowed !== true) {
|
|
172
|
+
errors.push('definition does not allow standing authority');
|
|
173
|
+
}
|
|
174
|
+
return { ok: errors.length === 0, errors, settings: checked.settings };
|
|
175
|
+
}
|
|
176
|
+
function upsertProcedureInstall(store, install) {
|
|
177
|
+
return {
|
|
178
|
+
...store,
|
|
179
|
+
version: exports.PROCEDURE_STORE_VERSION,
|
|
180
|
+
installs: [...(store.installs ?? []).filter(i => i.procedureId !== install.procedureId), install],
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
function removeProcedureInstall(store, id) {
|
|
184
|
+
return { ...store, installs: (store.installs ?? []).filter(i => i.procedureId !== id) };
|
|
94
185
|
}
|
|
95
186
|
/** Insert-or-replace by verb. Destructive existing procedures are NOT silently
|
|
96
187
|
* downgraded: a learned/auto write can't overwrite a destructive=true seed
|
|
@@ -102,12 +193,13 @@ function upsertProcedure(store, proc, force = false) {
|
|
|
102
193
|
}
|
|
103
194
|
const next = store.procedures.filter(p => p.verb !== proc.verb);
|
|
104
195
|
next.push({ ...proc, updatedAt: proc.updatedAt || new Date().toISOString() });
|
|
105
|
-
return { version: store.version || exports.PROCEDURE_STORE_VERSION, procedures: next };
|
|
196
|
+
return { version: store.version || exports.PROCEDURE_STORE_VERSION, procedures: next, installs: store.installs ?? [] };
|
|
106
197
|
}
|
|
107
198
|
function removeProcedure(store, verb) {
|
|
108
199
|
return {
|
|
109
200
|
version: store.version || exports.PROCEDURE_STORE_VERSION,
|
|
110
201
|
procedures: store.procedures.filter(p => p.verb !== verb),
|
|
202
|
+
installs: (store.installs ?? []).filter(i => i.procedureId !== verb),
|
|
111
203
|
};
|
|
112
204
|
}
|
|
113
205
|
// ---------- Matching (PURE) --------------------------------------------------
|
|
@@ -179,6 +271,8 @@ function matchProcedure(prompt, store, opts = {}) {
|
|
|
179
271
|
let best = null;
|
|
180
272
|
let bestLen = -1;
|
|
181
273
|
for (const procedure of store.procedures) {
|
|
274
|
+
if (!opts.includeInactive && effectiveInstall(store, procedure).state !== 'active')
|
|
275
|
+
continue;
|
|
182
276
|
for (const trigger of procedure.triggers) {
|
|
183
277
|
const t = trigger.toLowerCase();
|
|
184
278
|
if (!triggerHits(promptLower, t))
|
|
@@ -266,4 +360,72 @@ exports.GIT_SEED_SET = [
|
|
|
266
360
|
status: 'seeded',
|
|
267
361
|
},
|
|
268
362
|
];
|
|
363
|
+
/** Bundled orchestration procedures. Unlike the legacy git seed set these are
|
|
364
|
+
* definitions, born DISABLED, and become agent-facing only through an
|
|
365
|
+
* operator-ratified ProcedureInstall. */
|
|
366
|
+
exports.SHIP_THROUGH_PROCEDURE = {
|
|
367
|
+
verb: 'ship-through',
|
|
368
|
+
triggers: [],
|
|
369
|
+
steps: [
|
|
370
|
+
'Start the run with `greprag procedure begin ship-through`, then reach a coherent diff.',
|
|
371
|
+
'Confer with reachable same-project GrepRAG peers; if none are reachable, use an independent local reviewer/subagent.',
|
|
372
|
+
'Incorporate valid findings, run proportional checks, then attest current-artifact review with `greprag procedure attest ship-through review --via peer|local --ref <reviewer>`.',
|
|
373
|
+
'Commit/merge only the task-scoped files.',
|
|
374
|
+
'Invoke only the affected target\'s registered deploy procedure(s).',
|
|
375
|
+
'Verify production health and the changed behavior.',
|
|
376
|
+
].join(' '),
|
|
377
|
+
caveats: 'Routine code changes only. Stop for failed checks, missing migrations/secrets, money, destructive live data, undeclared external systems, or scope expansion. Peer review informs correctness but never grants authority.',
|
|
378
|
+
endpoint: 'the affected production target is healthy and verified at the reviewed current commit',
|
|
379
|
+
status: 'seeded',
|
|
380
|
+
definitionVersion: 1,
|
|
381
|
+
settingsSchema: {
|
|
382
|
+
review_strategy: {
|
|
383
|
+
type: 'string',
|
|
384
|
+
default: 'peer-or-local',
|
|
385
|
+
enum: ['peer-or-local', 'peer-required', 'local'],
|
|
386
|
+
riskBearing: true,
|
|
387
|
+
description: 'Independent review source before commit/deploy.',
|
|
388
|
+
},
|
|
389
|
+
},
|
|
390
|
+
defaultInstall: { autonomy: 'execute', authority: 'standing' },
|
|
391
|
+
announce: {
|
|
392
|
+
summary: '`ship-through` ACTIVE — change/build tasks end peer-reviewed and verified in production, not “ready to deploy.” Start: `greprag procedure begin ship-through`; contract: `greprag procedure show ship-through`.',
|
|
393
|
+
reannounceOnCompact: true,
|
|
394
|
+
},
|
|
395
|
+
risk: {
|
|
396
|
+
maximumAutonomy: 'execute',
|
|
397
|
+
standingAuthorityAllowed: true,
|
|
398
|
+
authorityScope: ['task-scoped commit/merge', 'registered deploy procedures', 'production verification'],
|
|
399
|
+
},
|
|
400
|
+
};
|
|
401
|
+
exports.BUILTIN_PROCEDURES = [exports.SHIP_THROUGH_PROCEDURE];
|
|
402
|
+
/** Resolve a registered definition first (project override), then bundled. */
|
|
403
|
+
function resolveProcedure(store, id) {
|
|
404
|
+
return store.procedures.find(p => procedureId(p) === id)
|
|
405
|
+
?? exports.BUILTIN_PROCEDURES.find(p => procedureId(p) === id)
|
|
406
|
+
?? null;
|
|
407
|
+
}
|
|
408
|
+
/** Definitions visible to the control plane: registered + bundled, de-duped by id. */
|
|
409
|
+
function listProcedureDefinitions(store) {
|
|
410
|
+
const out = [...store.procedures];
|
|
411
|
+
const seen = new Set(out.map(procedureId));
|
|
412
|
+
for (const proc of exports.BUILTIN_PROCEDURES) {
|
|
413
|
+
if (!seen.has(procedureId(proc)))
|
|
414
|
+
out.push(proc);
|
|
415
|
+
}
|
|
416
|
+
return out;
|
|
417
|
+
}
|
|
418
|
+
/** SessionStart summaries for active installs only. Legacy procedures do not
|
|
419
|
+
* announce unless their definition explicitly opts in. */
|
|
420
|
+
function activeProcedureAnnounces(store) {
|
|
421
|
+
const lines = [];
|
|
422
|
+
for (const proc of listProcedureDefinitions(store)) {
|
|
423
|
+
if (!proc.announce)
|
|
424
|
+
continue;
|
|
425
|
+
if (effectiveInstall(store, proc).state !== 'active')
|
|
426
|
+
continue;
|
|
427
|
+
lines.push(proc.announce.summary);
|
|
428
|
+
}
|
|
429
|
+
return lines;
|
|
430
|
+
}
|
|
269
431
|
//# sourceMappingURL=procedure.js.map
|
package/dist/procedure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedure.js","sourceRoot":"","sources":["../src/procedure.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"procedure.js","sourceRoot":"","sources":["../src/procedure.ts"],"names":[],"mappings":"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"}
|