greprag 5.49.15 → 5.50.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.
Files changed (57) hide show
  1. package/README.md +4 -1
  2. package/dist/commands/codex-delivery.d.ts +2 -0
  3. package/dist/commands/codex-delivery.js +9 -16
  4. package/dist/commands/codex-delivery.js.map +1 -1
  5. package/dist/commands/codex-doctor.js +2 -1
  6. package/dist/commands/codex-doctor.js.map +1 -1
  7. package/dist/commands/codex-wake-test.js +2 -1
  8. package/dist/commands/codex-wake-test.js.map +1 -1
  9. package/dist/commands/codex.js +6 -3
  10. package/dist/commands/codex.js.map +1 -1
  11. package/dist/commands/doc-pointer-reminder.d.ts +18 -0
  12. package/dist/commands/doc-pointer-reminder.js +41 -0
  13. package/dist/commands/doc-pointer-reminder.js.map +1 -0
  14. package/dist/commands/enrichment-health-reminder.d.ts +23 -0
  15. package/dist/commands/enrichment-health-reminder.js +39 -0
  16. package/dist/commands/enrichment-health-reminder.js.map +1 -0
  17. package/dist/commands/inbox-primer-reminder.js +2 -2
  18. package/dist/commands/inbox-primer-reminder.js.map +1 -1
  19. package/dist/commands/init.js +20 -0
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/load.js +8 -0
  22. package/dist/commands/load.js.map +1 -1
  23. package/dist/commands/memory.js +40 -12
  24. package/dist/commands/memory.js.map +1 -1
  25. package/dist/commands/opencode-interrupt.d.ts +5 -0
  26. package/dist/commands/opencode-interrupt.js +8 -2
  27. package/dist/commands/opencode-interrupt.js.map +1 -1
  28. package/dist/commands/opencode-relay.js +1 -1
  29. package/dist/commands/opencode-relay.js.map +1 -1
  30. package/dist/commands/procedure.d.ts +15 -0
  31. package/dist/commands/procedure.js +167 -0
  32. package/dist/commands/procedure.js.map +1 -0
  33. package/dist/commands/reminder-registry.js +6 -0
  34. package/dist/commands/reminder-registry.js.map +1 -1
  35. package/dist/commands/reminder-types.d.ts +27 -0
  36. package/dist/commands/skill-gain-reminder.d.ts +17 -0
  37. package/dist/commands/skill-gain-reminder.js +32 -0
  38. package/dist/commands/skill-gain-reminder.js.map +1 -0
  39. package/dist/commands/skillgain.d.ts +12 -0
  40. package/dist/commands/skillgain.js +109 -0
  41. package/dist/commands/skillgain.js.map +1 -0
  42. package/dist/hook.js +204 -2
  43. package/dist/hook.js.map +1 -1
  44. package/dist/index.js +4 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/opencode-plugin.bundle.js +70 -3
  47. package/dist/procedure.d.ts +88 -0
  48. package/dist/procedure.js +269 -0
  49. package/dist/procedure.js.map +1 -0
  50. package/dist/skill-landing.d.ts +88 -0
  51. package/dist/skill-landing.js +220 -0
  52. package/dist/skill-landing.js.map +1 -0
  53. package/package.json +1 -1
  54. package/skill/commander/SKILL.md +2 -2
  55. package/skill/greprag/SKILL.md +2 -2
  56. package/skill/greprag/docs/inbox-watch.md +5 -5
  57. package/skill/templates/chip-leader-opencode.md +98 -0
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /** `greprag procedure` — manage the project's operational recipes
3
+ * (docs/procedure-system.md). PROOF slice: seed + inspect + dry-run match.
4
+ *
5
+ * Subcommands:
6
+ * list — show this project's procedures
7
+ * show <verb> — print one procedure + its injection text
8
+ * seed [--git] — write the git-ecosystem seed set (commit/merge/push/deploy/release)
9
+ * register --verb V --steps "..." [--caveats "..."] [--endpoint "..."] [--trigger T ...] [--destructive]
10
+ * rm <verb> — remove a procedure
11
+ * match "<text>" — dry-run: what would inject for this prompt
12
+ *
13
+ * Identity comes from the project anchor (git-root-derived), same key the
14
+ * hot-path hook uses. Zero network — the store is the local file beside the
15
+ * matchset cache. */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.runProcedure = runProcedure;
18
+ const procedure_1 = require("../procedure");
19
+ const project_anchor_1 = require("../project-anchor");
20
+ function getFlag(args, flag) {
21
+ const idx = args.indexOf(flag);
22
+ if (idx === -1 || idx + 1 >= args.length)
23
+ return undefined;
24
+ return args[idx + 1];
25
+ }
26
+ /** Collect every `--trigger X` occurrence (repeatable flag). */
27
+ function collectFlags(args, flag) {
28
+ const out = [];
29
+ for (let i = 0; i < args.length - 1; i++) {
30
+ if (args[i] === flag)
31
+ out.push(args[i + 1]);
32
+ }
33
+ return out;
34
+ }
35
+ function resolveProjectId() {
36
+ const anchor = (0, project_anchor_1.readAnchor)(process.cwd());
37
+ return { projectId: anchor.projectId, projectName: anchor.projectName };
38
+ }
39
+ function printProcedure(p) {
40
+ const tag = p.destructive ? ' [DESTRUCTIVE — seed-only]' : '';
41
+ console.log(` ${p.verb} (${p.status})${tag}`);
42
+ console.log(` triggers: ${p.triggers.join(', ')}`);
43
+ console.log(` steps: ${p.steps}`);
44
+ if (p.caveats)
45
+ console.log(` gate: ${p.caveats}`);
46
+ if (p.endpoint)
47
+ console.log(` endpoint: ${p.endpoint}`);
48
+ }
49
+ async function runProcedure(args) {
50
+ const sub = args[0];
51
+ const rest = args.slice(1);
52
+ const { projectId, projectName } = resolveProjectId();
53
+ switch (sub) {
54
+ case 'list': {
55
+ const store = (0, procedure_1.readProcedureStore)(projectId);
56
+ if (store.procedures.length === 0) {
57
+ console.log(`No procedures for ${projectName}. Seed the git set: greprag procedure seed --git`);
58
+ return;
59
+ }
60
+ console.log(`Procedures for ${projectName} (${store.procedures.length}):`);
61
+ for (const p of store.procedures)
62
+ printProcedure(p);
63
+ console.log(`\n store: ${(0, procedure_1.procedureStorePath)(projectId)}`);
64
+ return;
65
+ }
66
+ case 'show': {
67
+ const verb = rest[0];
68
+ if (!verb) {
69
+ console.error('Usage: greprag procedure show <verb>');
70
+ process.exit(1);
71
+ }
72
+ const store = (0, procedure_1.readProcedureStore)(projectId);
73
+ const p = store.procedures.find(x => x.verb === verb);
74
+ if (!p) {
75
+ console.error(`No procedure "${verb}" for ${projectName}.`);
76
+ process.exit(1);
77
+ }
78
+ printProcedure(p);
79
+ console.log(`\n --- injection text (what the agent sees) ---`);
80
+ console.log((0, procedure_1.buildProcedureInjection)(p));
81
+ return;
82
+ }
83
+ case 'seed': {
84
+ // --git is the only seed set today; default to it so bare `seed` works.
85
+ const store = (0, procedure_1.readProcedureStore)(projectId);
86
+ let next = store;
87
+ for (const p of procedure_1.GIT_SEED_SET) {
88
+ next = (0, procedure_1.upsertProcedure)(next, p, /* force */ true);
89
+ }
90
+ (0, procedure_1.writeProcedureStore)(projectId, next);
91
+ console.log(`Seeded ${procedure_1.GIT_SEED_SET.length} git-ecosystem procedures for ${projectName}:`);
92
+ for (const p of procedure_1.GIT_SEED_SET)
93
+ console.log(` • ${p.verb}${p.destructive ? ' (destructive — seed-only)' : ''}`);
94
+ console.log(`\n store: ${(0, procedure_1.procedureStorePath)(projectId)}`);
95
+ return;
96
+ }
97
+ case 'register': {
98
+ const verb = getFlag(rest, '--verb');
99
+ const steps = getFlag(rest, '--steps');
100
+ if (!verb || !steps) {
101
+ console.error('Usage: greprag procedure register --verb <v> --steps "<...>" [--caveats "<...>"] [--endpoint "<...>"] [--trigger <t> ...] [--destructive]');
102
+ process.exit(1);
103
+ }
104
+ const triggers = collectFlags(rest, '--trigger');
105
+ const proc = {
106
+ verb,
107
+ triggers: triggers.length ? triggers : [verb],
108
+ steps,
109
+ caveats: getFlag(rest, '--caveats'),
110
+ endpoint: getFlag(rest, '--endpoint'),
111
+ status: 'seeded',
112
+ destructive: rest.includes('--destructive') || undefined,
113
+ };
114
+ const store = (0, procedure_1.readProcedureStore)(projectId);
115
+ (0, procedure_1.writeProcedureStore)(projectId, (0, procedure_1.upsertProcedure)(store, proc, /* force */ true));
116
+ console.log(`Registered procedure "${verb}" for ${projectName}.`);
117
+ printProcedure(proc);
118
+ return;
119
+ }
120
+ case 'rm': {
121
+ const verb = rest[0];
122
+ if (!verb) {
123
+ console.error('Usage: greprag procedure rm <verb>');
124
+ process.exit(1);
125
+ }
126
+ const store = (0, procedure_1.readProcedureStore)(projectId);
127
+ if (!store.procedures.some(p => p.verb === verb)) {
128
+ console.error(`No procedure "${verb}" for ${projectName}.`);
129
+ process.exit(1);
130
+ }
131
+ (0, procedure_1.writeProcedureStore)(projectId, (0, procedure_1.removeProcedure)(store, verb));
132
+ console.log(`Removed procedure "${verb}".`);
133
+ return;
134
+ }
135
+ case 'match': {
136
+ const text = rest.join(' ').trim();
137
+ if (!text) {
138
+ console.error('Usage: greprag procedure match "<prompt text>"');
139
+ process.exit(1);
140
+ }
141
+ const store = (0, procedure_1.readProcedureStore)(projectId);
142
+ const m = (0, procedure_1.matchProcedure)(text, store);
143
+ if (!m) {
144
+ const raw = (0, procedure_1.matchProcedure)(text, store, { ignoreIntentGuard: true });
145
+ if (raw) {
146
+ console.log(`No injection — "${raw.procedure.verb}" matched on "${raw.trigger}" but the intent guard suppressed it (reads as a mention, not a request).`);
147
+ return;
148
+ }
149
+ console.log(`No procedure matches: "${text}"`);
150
+ return;
151
+ }
152
+ console.log(`Matched "${m.procedure.verb}" via trigger "${m.trigger}". Would inject:\n`);
153
+ console.log((0, procedure_1.buildProcedureInjection)(m.procedure));
154
+ return;
155
+ }
156
+ default:
157
+ console.log('greprag procedure — operational recipes for this repo (docs/procedure-system.md)');
158
+ console.log(' list list this project\'s procedures');
159
+ console.log(' show <verb> print one + its injection text');
160
+ console.log(' seed --git write the git-ecosystem seed set');
161
+ console.log(' register --verb ... hand-roll a procedure');
162
+ console.log(' rm <verb> remove a procedure');
163
+ console.log(' match "<text>" dry-run: what would inject for this prompt');
164
+ return;
165
+ }
166
+ }
167
+ //# sourceMappingURL=procedure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure.js","sourceRoot":"","sources":["../../src/commands/procedure.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ exports.collectAnnounces = collectAnnounces;
12
12
  const inbox_primer_reminder_1 = require("./inbox-primer-reminder");
13
13
  const load_primer_reminder_1 = require("./load-primer-reminder");
14
14
  const corpus_reminder_1 = require("./corpus-reminder");
15
+ const doc_pointer_reminder_1 = require("./doc-pointer-reminder");
15
16
  const setup_reminder_1 = require("./setup-reminder");
16
17
  const assistant_reminder_1 = require("./assistant-reminder");
17
18
  const memory_reflex_1 = require("./memory-reflex");
@@ -19,6 +20,8 @@ const arm_reminder_1 = require("./arm-reminder");
19
20
  const friction_reminder_1 = require("./friction-reminder");
20
21
  const collision_reminder_1 = require("./collision-reminder");
21
22
  const version_reminder_1 = require("./version-reminder");
23
+ const enrichment_health_reminder_1 = require("./enrichment-health-reminder");
24
+ const skill_gain_reminder_1 = require("./skill-gain-reminder");
22
25
  /** Registry order = display order. THE single agent-facing announce/reminder assembly:
23
26
  * the hook does I/O → fills ReminderEnv → collectAnnounces (SessionStart) / collectReminders
24
27
  * (per turn) render every module here in this order. Order preserves the historical recap
@@ -30,8 +33,11 @@ exports.REGISTRY = [
30
33
  load_primer_reminder_1.loadPrimerModule,
31
34
  load_primer_reminder_1.chipSpawnPointerModule,
32
35
  corpus_reminder_1.corpusAnnounceModule,
36
+ doc_pointer_reminder_1.docPointerAnnounceModule, // announce-only "core documents" list (docs/doc-pointer-system.md)
37
+ skill_gain_reminder_1.skillGainAnnounceModule, // announce-only skill-gain landings + proposals (docs/skill-learning-loop.md)
33
38
  setup_reminder_1.setupWarningModule,
34
39
  version_reminder_1.versionUpgradeModule, // Deficiency-gated announce — silent unless a newer release exists
40
+ enrichment_health_reminder_1.enrichmentHealthModule, // Deficiency-gated announce — silent unless the Gemini probe fails (fix c2eb8777)
35
41
  assistant_reminder_1.assistantDoctrineModule,
36
42
  memory_reflex_1.memoryPrimerModule,
37
43
  arm_reminder_1.watcherArmModule,
@@ -1 +1 @@
1
- {"version":3,"file":"reminder-registry.js","sourceRoot":"","sources":["../../src/commands/reminder-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reminder-registry.js","sourceRoot":"","sources":["../../src/commands/reminder-registry.ts"],"names":[],"mappings":";AAAA;;;;kEAIkE;;;AAgElE,4CAaC;AAMD,8BAkBC;AAID,4CAUC;AAhHD,mEAA4D;AAC5D,iEAAkF;AAClF,uDAAyD;AACzD,iEAAkE;AAClE,qDAAsD;AACtD,6DAA+D;AAC/D,mDAAqD;AACrD,iDAAkD;AAClD,2DAA6D;AAC7D,6DAA4D;AAC5D,yDAA0D;AAC1D,6EAAsE;AACtE,+DAAgE;AAEhE;;;;;6EAK6E;AAChE,QAAA,QAAQ,GAAqB;IACxC,yCAAiB;IACjB,uCAAgB;IAChB,6CAAsB;IACtB,sCAAoB;IACpB,+CAAwB,EAAE,mEAAmE;IAC7F,6CAAuB,EAAG,8EAA8E;IACxG,mCAAkB;IAClB,uCAAoB,EAAI,mEAAmE;IAC3F,mDAAsB,EAAE,kFAAkF;IAC1G,4CAAuB;IACvB,kCAAkB;IAClB,+BAAgB;IAChB,0CAAsB;IACtB,yCAAoB,EAAI,oEAAoE;CAC7F,CAAC;AAEF;;4FAE4F;AACrF,MAAM,aAAa,GAAG,CAAC,WAA6B,gBAAQ,EAAoB,EAAE,CACvF,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC;AADjD,QAAA,aAAa,iBACoC;AACvD,MAAM,cAAc,GAAG,CAAC,WAA6B,gBAAQ,EAAoB,EAAE,CACxF,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AADpC,QAAA,cAAc,kBACsB;AAEjD;;;0FAG0F;AACnF,MAAM,wBAAwB,GAAG,CAAC,WAA6B,gBAAQ,EAAoB,EAAE,CAClG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,KAAK,KAAK,CAAC,CAAC;AAD7C,QAAA,wBAAwB,4BACqB;AAQ1D;;mEAEmE;AACnE,SAAgB,gBAAgB,CAC9B,GAAgB,EAAE,WAA6B,gBAAQ;IAEvD,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAY,CAAC;QACjB,IAAI,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACxC,IAAI,IAAI,GAAkB,IAAI,CAAC;QAC/B,IAAI,CAAC;YAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACtD,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;4FAG4F;AAC5F,SAAgB,SAAS,CAAC,QAA0B;IAClD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,KAAK,GAAG,CAAC,CAAiB,EAAQ,EAAE;QACxC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,OAAO,CAAC,4BAA4B;QAChF,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;QACzD,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;yDACyD;AACzD,SAAgB,gBAAgB,CAC9B,GAAgB,EAAE,WAA6B,gBAAQ;IAEvD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,GAAkB,IAAI,CAAC;QAC5B,IAAI,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAChD,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -51,6 +51,33 @@ export interface ReminderEnv {
51
51
  * searches them before answering from training data. Empty/undefined → the
52
52
  * corpus announce stays silent. adr: adr/corpus-tags.md */
53
53
  corpusApiDocs?: string[];
54
+ /** This project's auto-registered doc pointers (docs/doc-pointer-system.md) —
55
+ * the hook's single reconcile+list round trip against /v1/docptr (vanished
56
+ * docs went stale server-side in the same call). Drives the doc-pointer
57
+ * announce. Empty/undefined → the announce stays silent. */
58
+ docPointers?: Array<{
59
+ path: string;
60
+ hook: string;
61
+ }>;
62
+ /** Deficiency-gated outage signal (fix c2eb8777): the live Gemini probe
63
+ * (/v1/health/enrichment) failed — write-side enrichment is down. Set by
64
+ * the hook with the failure class + operator action; null/undefined when
65
+ * healthy (the announce stays silent). */
66
+ enrichmentDown?: {
67
+ errorClass: string;
68
+ detail?: string;
69
+ actionHint?: string;
70
+ } | null;
71
+ /** Skill Learning Loop landing report (docs/skill-learning-loop.md §fuse
72
+ * shape): briefcases the recap hook just landed (learned doc + fuse line in
73
+ * SKILL.md — they self-apply on the skill's next invocation). Purely
74
+ * informational. Undefined/empty → announce silent. */
75
+ skillGains?: {
76
+ landed: Array<{
77
+ skill: string;
78
+ oneLiner: string;
79
+ }>;
80
+ };
54
81
  /** Auto-surfaced episodic-memory injection — the hook owns the recall-intent gate +
55
82
  * the search + the confidence gate + framing; the memory-reflex module routes the
56
83
  * framed string as its per-turn reminder. Null = nothing cleared the gate this turn. */
@@ -0,0 +1,17 @@
1
+ /** skill-gain-announce — the Skill Learning Loop's SessionStart surface
2
+ * (docs/skill-learning-loop.md §fuse shape). PURELY INFORMATIONAL: the
3
+ * landing leg already wrote the briefcase (learned doc + fuse line in
4
+ * SKILL.md), and the fuse self-applies on the skill's NEXT invocation — this
5
+ * block just tells the operator their skills picked something up. Never a
6
+ * task; the voluntarism corpse stays buried.
7
+ *
8
+ * The hook does the I/O and passes env.skillGains; this module is PURE
9
+ * render. Silent when nothing landed. Startup-only. */
10
+ import { ReminderModule } from './reminder-types';
11
+ export declare function buildSkillGainAnnounce(gains: {
12
+ landed: Array<{
13
+ skill: string;
14
+ oneLiner: string;
15
+ }>;
16
+ } | undefined): string | null;
17
+ export declare const skillGainAnnounceModule: ReminderModule;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /** skill-gain-announce — the Skill Learning Loop's SessionStart surface
3
+ * (docs/skill-learning-loop.md §fuse shape). PURELY INFORMATIONAL: the
4
+ * landing leg already wrote the briefcase (learned doc + fuse line in
5
+ * SKILL.md), and the fuse self-applies on the skill's NEXT invocation — this
6
+ * block just tells the operator their skills picked something up. Never a
7
+ * task; the voluntarism corpse stays buried.
8
+ *
9
+ * The hook does the I/O and passes env.skillGains; this module is PURE
10
+ * render. Silent when nothing landed. Startup-only. */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.skillGainAnnounceModule = void 0;
13
+ exports.buildSkillGainAnnounce = buildSkillGainAnnounce;
14
+ function buildSkillGainAnnounce(gains) {
15
+ if (!gains || gains.landed.length === 0)
16
+ return null;
17
+ return [
18
+ '[greprag skills — learned from past runs (Skill Learning Loop):]',
19
+ ...gains.landed.map((l) => `⚙ ${l.skill} packed a briefcase: ${l.oneLiner}`),
20
+ 'Each lands as a fuse line + focused doc inside the skill and SELF-APPLIES on its next'
21
+ + ' invocation (the agent folds it in, deletes the fuse). Nothing to do here.'
22
+ + ' Undo one: `greprag skillgain reject <id>`.',
23
+ ].join('\n');
24
+ }
25
+ exports.skillGainAnnounceModule = {
26
+ id: 'skill-gain-announce',
27
+ detect: (_env) => ({ tier: 'silent' }), // announce-only
28
+ announce: (env) => buildSkillGainAnnounce(env.skillGains),
29
+ reannounceOnCompact: false,
30
+ reminder: () => null,
31
+ };
32
+ //# sourceMappingURL=skill-gain-reminder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-gain-reminder.js","sourceRoot":"","sources":["../../src/commands/skill-gain-reminder.ts"],"names":[],"mappings":";AAAA;;;;;;;;wDAQwD;;;AAIxD,wDAWC;AAXD,SAAgB,sBAAsB,CACpC,KAAyE;IAEzE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO;QACL,kEAAkE;QAClE,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,wBAAwB,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5E,uFAAuF;cACrF,4EAA4E;cAC5E,6CAA6C;KAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAEY,QAAA,uBAAuB,GAAmB;IACrD,EAAE,EAAE,qBAAqB;IACzB,MAAM,EAAE,CAAC,IAAiB,EAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB;IAChF,QAAQ,EAAE,CAAC,GAAgB,EAAiB,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;IACrF,mBAAmB,EAAE,KAAK;IAC1B,QAAQ,EAAE,GAAkB,EAAE,CAAC,IAAI;CACpC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** greprag skillgain — the Skill Learning Loop's operator/agent verbs
2
+ * (docs/skill-learning-loop.md). The landing leg auto-lands reference gains;
3
+ * rule/scope PROPOSALS park at the operator gate and are resolved here:
4
+ *
5
+ * skillgain list pending gains for this project (all types)
6
+ * skillgain done <8hex> the proposal was applied to the skill (per
7
+ * skill-fix-conventions, diff shown + accepted)
8
+ * skillgain reject <8hex> the proposal was bogus — never show it again
9
+ *
10
+ * Thin client over /v1/skillgain; project resolved from cwd like every
11
+ * other command. Self-contained dispatcher + body (the CLI command pattern). */
12
+ export declare function runSkillGain(args: string[]): Promise<void>;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /** greprag skillgain — the Skill Learning Loop's operator/agent verbs
3
+ * (docs/skill-learning-loop.md). The landing leg auto-lands reference gains;
4
+ * rule/scope PROPOSALS park at the operator gate and are resolved here:
5
+ *
6
+ * skillgain list pending gains for this project (all types)
7
+ * skillgain done <8hex> the proposal was applied to the skill (per
8
+ * skill-fix-conventions, diff shown + accepted)
9
+ * skillgain reject <8hex> the proposal was bogus — never show it again
10
+ *
11
+ * Thin client over /v1/skillgain; project resolved from cwd like every
12
+ * other command. Self-contained dispatcher + body (the CLI command pattern). */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.runSkillGain = runSkillGain;
15
+ const project_anchor_1 = require("../project-anchor");
16
+ const skill_landing_1 = require("../skill-landing");
17
+ function getConfig() {
18
+ return {
19
+ apiUrl: process.env.GREPRAG_API_URL || 'https://api.greprag.com',
20
+ apiKey: process.env.GREPRAG_API_KEY || '',
21
+ };
22
+ }
23
+ const HELP = `greprag skillgain — Skill Learning Loop queue (docs/skill-learning-loop.md)
24
+
25
+ USAGE
26
+ greprag skillgain list Pending gains for this project (not yet landed).
27
+ greprag skillgain reject <8hex> The UNDO: mark a gain bogus AND remove its
28
+ landed artifacts (the fuse line in SKILL.md
29
+ + the docs/learned/<slug>.md doc).
30
+ greprag skillgain done <8hex> Manually mark a pending gain resolved
31
+ (rarely needed — landing is automatic and a
32
+ digested fuse needs no marking).
33
+
34
+ Gains land automatically at session start as a briefcase (fuse line + focused
35
+ doc) and SELF-APPLY on the skill's next invocation.`;
36
+ async function runSkillGain(args) {
37
+ const sub = args[0];
38
+ const cfg = getConfig();
39
+ if (!cfg.apiKey) {
40
+ console.error('GREPRAG_API_KEY not set — run `greprag init` first.');
41
+ process.exit(1);
42
+ }
43
+ const anchor = (0, project_anchor_1.readAnchor)(process.cwd());
44
+ if (sub === 'list') {
45
+ const res = await fetch(`${cfg.apiUrl}/v1/skillgain/${anchor.projectId}/pending`, {
46
+ headers: { 'Authorization': `Bearer ${cfg.apiKey}` },
47
+ });
48
+ if (!res.ok) {
49
+ console.error(`API ${res.status}`);
50
+ process.exit(1);
51
+ }
52
+ const data = await res.json();
53
+ const gains = data.gains || [];
54
+ if (gains.length === 0) {
55
+ console.log('No pending skill gains.');
56
+ return;
57
+ }
58
+ for (const g of gains) {
59
+ console.log(`[${g.nodeId}] ${g.skill} · ${g.gainType}\n ${g.text}`);
60
+ }
61
+ return;
62
+ }
63
+ if (sub === 'done' || sub === 'reject') {
64
+ const nodeId = (args[1] || '').toLowerCase();
65
+ if (!/^[0-9a-f]{8}$/.test(nodeId)) {
66
+ console.error(`Usage: greprag skillgain ${sub} <8hex>`);
67
+ process.exit(1);
68
+ }
69
+ const status = sub === 'done' ? 'landed' : 'rejected';
70
+ const res = await fetch(`${cfg.apiUrl}/v1/skillgain/${anchor.projectId}/status`, {
71
+ method: 'POST',
72
+ headers: { 'Authorization': `Bearer ${cfg.apiKey}`, 'Content-Type': 'application/json' },
73
+ body: JSON.stringify({
74
+ projectName: anchor.projectName,
75
+ updates: [{ nodeId, status }],
76
+ }),
77
+ });
78
+ if (!res.ok) {
79
+ console.error(`API ${res.status}`);
80
+ process.exit(1);
81
+ }
82
+ const data = await res.json();
83
+ if ((data.updated || 0) === 0) {
84
+ console.error(`[${nodeId}] not found in ${anchor.projectName}'s skillgain queue.`);
85
+ process.exit(1);
86
+ }
87
+ console.log(`[${nodeId}] → ${status}`);
88
+ // Reject is the UNDO: also remove any landed artifacts (the fuse line in
89
+ // SKILL.md + the docs/learned/<slug>.md doc). Skill name via the record.
90
+ if (sub === 'reject') {
91
+ try {
92
+ const gr = await fetch(`${cfg.apiUrl}/v1/skillgain/${anchor.projectId}/gain/${nodeId}`, { headers: { 'Authorization': `Bearer ${cfg.apiKey}` } });
93
+ if (gr.ok) {
94
+ const gd = await gr.json();
95
+ if (gd.gain?.skill) {
96
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
97
+ const removed = (0, skill_landing_1.removeLandedGain)(gd.gain.skill, nodeId, process.cwd(), homeDir);
98
+ if (removed)
99
+ console.log(` removed landed artifacts from ${gd.gain.skill}`);
100
+ }
101
+ }
102
+ }
103
+ catch { /* best-effort — the stamp makes manual cleanup findable */ }
104
+ }
105
+ return;
106
+ }
107
+ console.log(HELP);
108
+ }
109
+ //# sourceMappingURL=skillgain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillgain.js","sourceRoot":"","sources":["../../src/commands/skillgain.ts"],"names":[],"mappings":"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"}