@specship/specship-win32-arm64 0.16.0 → 0.18.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/lib/dist/activation/steering.d.ts +11 -2
- package/lib/dist/activation/steering.d.ts.map +1 -1
- package/lib/dist/activation/steering.js +26 -9
- package/lib/dist/activation/steering.js.map +1 -1
- package/lib/dist/bin/specship.js +34 -2
- package/lib/dist/bin/specship.js.map +1 -1
- package/lib/dist/commands/specship/learn.md +45 -0
- package/lib/dist/config/runtime-settings.d.ts +25 -0
- package/lib/dist/config/runtime-settings.d.ts.map +1 -0
- package/lib/dist/config/runtime-settings.js +99 -0
- package/lib/dist/config/runtime-settings.js.map +1 -0
- package/lib/dist/index.d.ts +9 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +8 -0
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.js +1 -1
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/targets/claude.d.ts.map +1 -1
- package/lib/dist/installer/targets/claude.js +7 -6
- package/lib/dist/installer/targets/claude.js.map +1 -1
- package/lib/dist/mcp/model-context.d.ts +5 -3
- package/lib/dist/mcp/model-context.d.ts.map +1 -1
- package/lib/dist/mcp/model-context.js +17 -8
- package/lib/dist/mcp/model-context.js.map +1 -1
- package/lib/dist/mcp/session.d.ts +1 -0
- package/lib/dist/mcp/session.d.ts.map +1 -1
- package/lib/dist/mcp/session.js +13 -0
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts +30 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +151 -11
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/reflect/index.d.ts +3 -1
- package/lib/dist/reflect/index.d.ts.map +1 -1
- package/lib/dist/reflect/index.js +5 -1
- package/lib/dist/reflect/index.js.map +1 -1
- package/lib/dist/reflect/miner.d.ts.map +1 -1
- package/lib/dist/reflect/miner.js +130 -5
- package/lib/dist/reflect/miner.js.map +1 -1
- package/lib/dist/reflect/session-outcomes.d.ts +50 -0
- package/lib/dist/reflect/session-outcomes.d.ts.map +1 -0
- package/lib/dist/reflect/session-outcomes.js +110 -0
- package/lib/dist/reflect/session-outcomes.js.map +1 -0
- package/lib/dist/reflect/sweep.d.ts +11 -0
- package/lib/dist/reflect/sweep.d.ts.map +1 -1
- package/lib/dist/reflect/sweep.js +29 -0
- package/lib/dist/reflect/sweep.js.map +1 -1
- package/lib/dist/server/routes/claude.js +27 -0
- package/lib/dist/workflows/defaults/spec-implement-mixed.yaml +197 -0
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +1 -1
- package/package.json +1 -1
|
@@ -16,11 +16,20 @@
|
|
|
16
16
|
* ceiling. Wording is A/B-gated before default-on release (REQ-STEER-003).
|
|
17
17
|
*/
|
|
18
18
|
export declare const STEERING_TEXT: string;
|
|
19
|
+
/**
|
|
20
|
+
* The haiku-tier template (LOWMODEL-DOC, REQ-LOWMODEL-002): small models
|
|
21
|
+
* follow prescriptive templates far better than principles, and fan-out
|
|
22
|
+
* (subagents) multiplies their cost and confusion. Kept under ~80 tokens
|
|
23
|
+
* (REQ-LOWMODEL-002.A2).
|
|
24
|
+
*/
|
|
25
|
+
export declare const STEERING_TEXT_HAIKU: string;
|
|
19
26
|
/**
|
|
20
27
|
* Decide whether to emit the steering line (REQ-STEER-002): silent unless the
|
|
21
28
|
* project is initialized (`.specship/` exists at cwd), and silent when the
|
|
22
29
|
* user opted out via `SPECSHIP_NO_STEERING=1`. Uninitialized projects and
|
|
23
|
-
* opted-out users get zero prompt noise.
|
|
30
|
+
* opted-out users get zero prompt noise. Tier-aware (REQ-LOWMODEL-002):
|
|
31
|
+
* haiku sessions get the prescriptive template; sonnet and frontier keep the
|
|
32
|
+
* standard line.
|
|
24
33
|
*/
|
|
25
|
-
export declare function buildSteeringNudge(cwd: string, env?: NodeJS.ProcessEnv): string | null;
|
|
34
|
+
export declare function buildSteeringNudge(cwd: string, env?: NodeJS.ProcessEnv, homedir?: string): string | null;
|
|
26
35
|
//# sourceMappingURL=steering.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steering.d.ts","sourceRoot":"","sources":["../../src/activation/steering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"steering.d.ts","sourceRoot":"","sources":["../../src/activation/steering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH;;;;GAIG;AACH,eAAO,MAAM,aAAa,QAKJ,CAAC;AAEvB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAIqC,CAAC;AAEtE;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CAUf"}
|
|
@@ -45,27 +45,44 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
45
45
|
};
|
|
46
46
|
})();
|
|
47
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
-
exports.STEERING_TEXT = void 0;
|
|
48
|
+
exports.STEERING_TEXT_HAIKU = exports.STEERING_TEXT = void 0;
|
|
49
49
|
exports.buildSteeringNudge = buildSteeringNudge;
|
|
50
50
|
const fs = __importStar(require("fs"));
|
|
51
51
|
const path = __importStar(require("path"));
|
|
52
|
+
const model_context_1 = require("../mcp/model-context");
|
|
53
|
+
const runtime_settings_1 = require("../config/runtime-settings");
|
|
52
54
|
/**
|
|
53
55
|
* The one steering line injected per prompt. Kept short (~40 tokens) — it is
|
|
54
56
|
* added to EVERY prompt in an initialized project, so brevity is the cost
|
|
55
57
|
* ceiling. Wording is A/B-gated before default-on release (REQ-STEER-003).
|
|
56
58
|
*/
|
|
57
|
-
exports.STEERING_TEXT = 'This project has a SpecShip code-graph index.
|
|
58
|
-
'
|
|
59
|
-
'mcp__specship__specship_explore with the relevant symbol names FIRST
|
|
60
|
-
'
|
|
59
|
+
exports.STEERING_TEXT = 'This project has a SpecShip code-graph index. Before reading or editing ANY ' +
|
|
60
|
+
'code for a task — understanding, implementing, fixing, refactoring — call ' +
|
|
61
|
+
'mcp__specship__specship_explore with the relevant symbol/file names FIRST. ' +
|
|
62
|
+
'Treat the source it returns as already read; use Read/Grep only for content ' +
|
|
63
|
+
'it did not return.';
|
|
64
|
+
/**
|
|
65
|
+
* The haiku-tier template (LOWMODEL-DOC, REQ-LOWMODEL-002): small models
|
|
66
|
+
* follow prescriptive templates far better than principles, and fan-out
|
|
67
|
+
* (subagents) multiplies their cost and confusion. Kept under ~80 tokens
|
|
68
|
+
* (REQ-LOWMODEL-002.A2).
|
|
69
|
+
*/
|
|
70
|
+
exports.STEERING_TEXT_HAIKU = 'This project has a SpecShip index. For any code question, call exactly: ' +
|
|
71
|
+
'mcp__specship__specship_explore with the symbol/file names from the question. ' +
|
|
72
|
+
'ONE call, then answer from its output — the source it returns is already read. ' +
|
|
73
|
+
'Do not spawn subagents. Do not Read/Grep files the tool returned.';
|
|
61
74
|
/**
|
|
62
75
|
* Decide whether to emit the steering line (REQ-STEER-002): silent unless the
|
|
63
76
|
* project is initialized (`.specship/` exists at cwd), and silent when the
|
|
64
77
|
* user opted out via `SPECSHIP_NO_STEERING=1`. Uninitialized projects and
|
|
65
|
-
* opted-out users get zero prompt noise.
|
|
78
|
+
* opted-out users get zero prompt noise. Tier-aware (REQ-LOWMODEL-002):
|
|
79
|
+
* haiku sessions get the prescriptive template; sonnet and frontier keep the
|
|
80
|
+
* standard line.
|
|
66
81
|
*/
|
|
67
|
-
function buildSteeringNudge(cwd, env = process.env) {
|
|
68
|
-
|
|
82
|
+
function buildSteeringNudge(cwd, env = process.env, homedir) {
|
|
83
|
+
// RUNSET-DOC: the opt-out resolves env > project .specship/settings.json >
|
|
84
|
+
// ~/.specship/settings.json, so a repo can silence steering durably.
|
|
85
|
+
if ((0, runtime_settings_1.resolveSetting)('SPECSHIP_NO_STEERING', cwd, env, homedir) === '1')
|
|
69
86
|
return null;
|
|
70
87
|
try {
|
|
71
88
|
if (!fs.statSync(path.join(cwd, '.specship')).isDirectory())
|
|
@@ -74,6 +91,6 @@ function buildSteeringNudge(cwd, env = process.env) {
|
|
|
74
91
|
catch {
|
|
75
92
|
return null;
|
|
76
93
|
}
|
|
77
|
-
return exports.STEERING_TEXT;
|
|
94
|
+
return (0, model_context_1.detectModelTier)(cwd, env, homedir) === 'haiku' ? exports.STEERING_TEXT_HAIKU : exports.STEERING_TEXT;
|
|
78
95
|
}
|
|
79
96
|
//# sourceMappingURL=steering.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steering.js","sourceRoot":"","sources":["../../src/activation/steering.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"steering.js","sourceRoot":"","sources":["../../src/activation/steering.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCH,gDAcC;AAnDD,uCAAyB;AACzB,2CAA6B;AAC7B,wDAAuD;AACvD,iEAA4D;AAE5D;;;;GAIG;AACU,QAAA,aAAa,GACxB,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,oBAAoB,CAAC;AAEvB;;;;;GAKG;AACU,QAAA,mBAAmB,GAC9B,0EAA0E;IAC1E,gFAAgF;IAChF,iFAAiF;IACjF,mEAAmE,CAAC;AAEtE;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,GAAW,EACX,MAAyB,OAAO,CAAC,GAAG,EACpC,OAAgB;IAEhB,2EAA2E;IAC3E,qEAAqE;IACrE,IAAI,IAAA,iCAAc,EAAC,sBAAsB,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACnF,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,IAAI,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAA,+BAAe,EAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,2BAAmB,CAAC,CAAC,CAAC,qBAAa,CAAC;AAC9F,CAAC"}
|
package/lib/dist/bin/specship.js
CHANGED
|
@@ -1279,6 +1279,8 @@ function main() {
|
|
|
1279
1279
|
.command('reflect [path]')
|
|
1280
1280
|
.description('Mine ingested transcripts for self-improvement proposals (memory rules, skills, hooks)')
|
|
1281
1281
|
.option('-j, --json', 'Output as JSON')
|
|
1282
|
+
.option('--capture', 'Capture a routine as a skill proposal: --title required, content on stdin (LEARN-DOC)')
|
|
1283
|
+
.option('--title <title>', 'Title for --capture')
|
|
1282
1284
|
.action(async (pathArg, options) => {
|
|
1283
1285
|
const projectPath = resolveProjectPath(pathArg);
|
|
1284
1286
|
try {
|
|
@@ -1288,6 +1290,33 @@ function main() {
|
|
|
1288
1290
|
}
|
|
1289
1291
|
const { default: SpecShip } = await loadSpecShip();
|
|
1290
1292
|
const cg = await SpecShip.open(projectPath);
|
|
1293
|
+
// Explicit capture door (LEARN-DOC, REQ-LEARN-002): crystallize a
|
|
1294
|
+
// distilled routine into a human-gated skill proposal. Content on
|
|
1295
|
+
// stdin so multi-line routines survive shell quoting.
|
|
1296
|
+
if (options.capture) {
|
|
1297
|
+
if (!options.title || !options.title.trim()) {
|
|
1298
|
+
error('--capture requires --title "<what this routine does>"');
|
|
1299
|
+
process.exit(1);
|
|
1300
|
+
}
|
|
1301
|
+
const chunks = [];
|
|
1302
|
+
for await (const c of process.stdin)
|
|
1303
|
+
chunks.push(c);
|
|
1304
|
+
const content = Buffer.concat(chunks).toString('utf-8').trim();
|
|
1305
|
+
if (!content) {
|
|
1306
|
+
error('--capture expects the routine content on stdin (pipe or heredoc)');
|
|
1307
|
+
process.exit(1);
|
|
1308
|
+
}
|
|
1309
|
+
const p = cg.reflectCapture({ title: options.title, content });
|
|
1310
|
+
if (options.json) {
|
|
1311
|
+
console.log(JSON.stringify(p, null, 2));
|
|
1312
|
+
}
|
|
1313
|
+
else {
|
|
1314
|
+
info(`Captured as proposal ${p.contentHash.slice(0, 12)} (${p.state}): ${p.title}`);
|
|
1315
|
+
info('Review and apply it from the dashboard Improvements page (preview-diff → confirm).');
|
|
1316
|
+
}
|
|
1317
|
+
cg.destroy();
|
|
1318
|
+
return;
|
|
1319
|
+
}
|
|
1291
1320
|
const result = cg.reflectAnalyze();
|
|
1292
1321
|
if (options.json) {
|
|
1293
1322
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -2132,7 +2161,8 @@ function main() {
|
|
|
2132
2161
|
.option('-l, --location <where>', 'Install location: "global" or "local". Default: prompt (local)')
|
|
2133
2162
|
.option('-y, --yes', 'Non-interactive: defaults to --location=local, auto-allow on')
|
|
2134
2163
|
.option('--no-permissions', 'Skip writing the auto-allow permissions list')
|
|
2135
|
-
.option('--sdd', '
|
|
2164
|
+
.option('--sdd', '(default) Install the spec-driven-development governance tier (spec/authoring/review/design commands + the spec-author nudge hook)')
|
|
2165
|
+
.option('--no-sdd', 'Skip the governance tier — retrieval-only install (the pre-0.18 default)')
|
|
2136
2166
|
.option('--with-jira', 'Enable the optional JIRA integration (talks to your Atlassian instance; off by default — the core install is 100% local)')
|
|
2137
2167
|
.option('--with-designer', 'Enable the optional Designer integration (EXPERIMENTAL — drives claude.ai/design via a debug Chrome session and may break without notice; off by default)')
|
|
2138
2168
|
.option('--statusline', 'Wire the SpecShip status-line segment into Claude (skips the prompt; never overwrites an existing status line)')
|
|
@@ -2183,7 +2213,9 @@ function main() {
|
|
|
2183
2213
|
target: opts.target,
|
|
2184
2214
|
location: opts.location,
|
|
2185
2215
|
autoAllow,
|
|
2186
|
-
|
|
2216
|
+
// SDD/governance is default-ON (INSTALL-WEDGE-DOC v2): commander's
|
|
2217
|
+
// --no-sdd sets opts.sdd=false; otherwise install the full surface.
|
|
2218
|
+
sdd: opts.sdd === false ? false : true,
|
|
2187
2219
|
withJira: opts.withJira === true ? true : undefined,
|
|
2188
2220
|
withDesigner: opts.withDesigner === true ? true : undefined,
|
|
2189
2221
|
statusLine,
|