@specship/specship-win32-arm64 0.12.0 → 0.13.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/bin/specship.js +48 -12
- package/lib/dist/bin/specship.js.map +1 -1
- package/lib/dist/db/migrations.d.ts +1 -1
- package/lib/dist/db/migrations.d.ts.map +1 -1
- package/lib/dist/db/migrations.js +16 -1
- package/lib/dist/db/migrations.js.map +1 -1
- package/lib/dist/db/schema.sql +10 -0
- package/lib/dist/db/spec-queries.d.ts +6 -0
- package/lib/dist/db/spec-queries.d.ts.map +1 -1
- package/lib/dist/db/spec-queries.js +8 -0
- package/lib/dist/db/spec-queries.js.map +1 -1
- package/lib/dist/index.d.ts +8 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +9 -0
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/server/cli.js +9 -7
- package/lib/dist/server/product-version.js +44 -0
- package/lib/dist/server/routes/claude.js +153 -42
- package/lib/dist/server/routes/config.js +35 -0
- package/lib/dist/server/routes/graph.js +22 -1
- package/lib/dist/server/routes/mcp.js +510 -0
- package/lib/dist/server/routes/projects.js +31 -3
- package/lib/dist/server/routes/status.js +3 -0
- package/lib/dist/server/routes/workflow.js +44 -3
- package/lib/dist/server/server-config.js +38 -0
- package/lib/dist/server/server.js +128 -58
- package/lib/dist/statusline/active-run.d.ts +2 -2
- package/lib/dist/statusline/active-run.d.ts.map +1 -1
- package/lib/dist/statusline/active-run.js +2 -2
- package/lib/dist/statusline/active-run.js.map +1 -1
- package/lib/dist/statusline/render.d.ts.map +1 -1
- package/lib/dist/statusline/render.js +41 -5
- package/lib/dist/statusline/render.js.map +1 -1
- package/lib/dist/statusline/types.d.ts +15 -0
- package/lib/dist/statusline/types.d.ts.map +1 -1
- package/lib/dist/ui/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/lib/dist/ui/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/lib/dist/ui/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/lib/dist/ui/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/lib/dist/ui/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
- package/lib/dist/ui/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
- package/lib/dist/ui/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
- package/lib/dist/ui/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
- package/lib/dist/ui/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
- package/lib/dist/ui/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
- package/lib/dist/ui/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/lib/dist/ui/assets/index-D8e4LiVb.js +51 -0
- package/lib/dist/ui/assets/index-ezwX2EfG.css +1 -0
- package/lib/dist/ui/favicon-16.png +0 -0
- package/lib/dist/ui/favicon-180.png +0 -0
- package/lib/dist/ui/favicon-32.png +0 -0
- package/lib/dist/ui/favicon.svg +20 -0
- package/lib/dist/ui/index.html +17 -0
- package/lib/dist/update/resolve-latest.d.ts +14 -0
- package/lib/dist/update/resolve-latest.d.ts.map +1 -0
- package/lib/dist/update/resolve-latest.js +29 -0
- package/lib/dist/update/resolve-latest.js.map +1 -0
- package/lib/dist/update/run-installer.d.ts +13 -0
- package/lib/dist/update/run-installer.d.ts.map +1 -0
- package/lib/dist/update/run-installer.js +43 -0
- package/lib/dist/update/run-installer.js.map +1 -0
- package/lib/dist/update/updater.d.ts +53 -0
- package/lib/dist/update/updater.d.ts.map +1 -0
- package/lib/dist/update/updater.js +164 -0
- package/lib/dist/update/updater.js.map +1 -0
- package/lib/dist/workflows/eta.d.ts +42 -0
- package/lib/dist/workflows/eta.d.ts.map +1 -0
- package/lib/dist/workflows/eta.js +146 -0
- package/lib/dist/workflows/eta.js.map +1 -0
- package/lib/dist/workflows/executor.d.ts.map +1 -1
- package/lib/dist/workflows/executor.js +25 -6
- package/lib/dist/workflows/executor.js.map +1 -1
- package/lib/dist/workflows/runners/prompt.d.ts +6 -0
- package/lib/dist/workflows/runners/prompt.d.ts.map +1 -1
- package/lib/dist/workflows/runners/prompt.js +10 -0
- package/lib/dist/workflows/runners/prompt.js.map +1 -1
- package/lib/dist/workflows/runners/types.d.ts +12 -0
- package/lib/dist/workflows/runners/types.d.ts.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +3 -2
- package/package.json +1 -1
- package/lib/dist/server/ssr/md.mjs +0 -83
- package/lib/dist/server/ssr/public/app.css +0 -1
- package/lib/dist/server/ssr/render.mjs +0 -564
- package/lib/dist/server/ssr/routes.js +0 -73
package/lib/dist/bin/specship.js
CHANGED
|
@@ -65,6 +65,9 @@ const worktree_1 = require("../sync/worktree");
|
|
|
65
65
|
const shimmer_progress_1 = require("../ui/shimmer-progress");
|
|
66
66
|
const glyphs_1 = require("../ui/glyphs");
|
|
67
67
|
const node_version_check_1 = require("./node-version-check");
|
|
68
|
+
const updater_1 = require("../update/updater");
|
|
69
|
+
const resolve_latest_1 = require("../update/resolve-latest");
|
|
70
|
+
const run_installer_1 = require("../update/run-installer");
|
|
68
71
|
const wasm_runtime_flags_1 = require("../extraction/wasm-runtime-flags");
|
|
69
72
|
// Lazy-load heavy modules (SpecShip, runInstaller) to keep CLI startup fast.
|
|
70
73
|
async function loadSpecShip() {
|
|
@@ -89,13 +92,13 @@ async function loadServerPackage() {
|
|
|
89
92
|
// 2. npm dep `@specship/specship-server` if some downstream
|
|
90
93
|
// consumer ever wires it as a separate package (kept for forward
|
|
91
94
|
// compatibility — not the shipped path).
|
|
92
|
-
// 3. Dev/workspace sibling: `
|
|
95
|
+
// 3. Dev/workspace sibling: `server/dist/index.js` for
|
|
93
96
|
// running from a checkout without a prior `npm run build`.
|
|
94
97
|
const candidates = [
|
|
95
98
|
path.resolve(__dirname, '..', 'server', 'index.js'),
|
|
96
99
|
'@specship/specship-server',
|
|
97
|
-
path.resolve(__dirname, '..', '..', '
|
|
98
|
-
path.resolve(__dirname, '..', '..', '..', '
|
|
100
|
+
path.resolve(__dirname, '..', '..', 'server', 'dist', 'index.js'),
|
|
101
|
+
path.resolve(__dirname, '..', '..', '..', 'server', 'dist', 'index.js'),
|
|
99
102
|
];
|
|
100
103
|
let lastErr = null;
|
|
101
104
|
for (const c of candidates) {
|
|
@@ -121,7 +124,7 @@ async function loadServerPackage() {
|
|
|
121
124
|
* hyphens/dots/underscores. Recover real paths from `~/.claude.json` (its
|
|
122
125
|
* `projects` object is keyed by real absolute paths), then from a `"cwd"`
|
|
123
126
|
* value in the slug's newest transcript, before falling back to the lossy
|
|
124
|
-
* decode. Mirrors `
|
|
127
|
+
* decode. Mirrors `server/src/ingest/project-paths.ts`
|
|
125
128
|
* (REQ-SLUGRES-004) — the server package depends on this one, so the CLI
|
|
126
129
|
* can't import it.
|
|
127
130
|
*/
|
|
@@ -1588,7 +1591,7 @@ function main() {
|
|
|
1588
1591
|
.option('--port <n>', 'HTTP port when --ui is set (default 4242)')
|
|
1589
1592
|
.option('--host <h>', 'HTTP bind host when --ui is set (default 127.0.0.1)')
|
|
1590
1593
|
.option('--ingest', 'Enable Claude Code JSONL transcript watcher (only when --ui is set)')
|
|
1591
|
-
.option('--web-dir <path>', 'Path to a built
|
|
1594
|
+
.option('--web-dir <path>', 'Path to a built desktop SPA (index.html lives here); auto-detected by default from the bundled ui/dist')
|
|
1592
1595
|
.option('--no-web', 'Run --ui headless (API only, no SPA)')
|
|
1593
1596
|
.option('--no-watch', 'Disable the file watcher (no auto-sync; useful on slow filesystems like WSL2 /mnt drives)')
|
|
1594
1597
|
.action(async (options) => {
|
|
@@ -1631,12 +1634,17 @@ function main() {
|
|
|
1631
1634
|
// Lazy-load the server package via dist path. The npm bin is
|
|
1632
1635
|
// packaged with the server already built under
|
|
1633
1636
|
// node_modules/@specship/specship-server, OR (dev) the
|
|
1634
|
-
// sibling
|
|
1637
|
+
// sibling server/dist directory.
|
|
1635
1638
|
const { createServer } = await loadServerPackage();
|
|
1636
|
-
// The dashboard is the
|
|
1637
|
-
//
|
|
1638
|
-
//
|
|
1639
|
+
// The dashboard is the built desktop SPA, served in-process by the
|
|
1640
|
+
// server itself (REQ-DESKTOP-033 — the server-rendered dashboard
|
|
1641
|
+
// retired). `--no-web` opts out to run API-only.
|
|
1639
1642
|
const serveUi = options.web !== false;
|
|
1643
|
+
// Resolve the SPA static dir:
|
|
1644
|
+
// - headless (--no-web): no SPA.
|
|
1645
|
+
// - otherwise the built SPA — explicit --web-dir, else auto-detect
|
|
1646
|
+
// the bundled ui/dist (webDir === undefined triggers the probe).
|
|
1647
|
+
const webDir = !serveUi ? null : (options.webDir ?? undefined);
|
|
1640
1648
|
// The JSONL ingest watcher now starts in-process inside createServer
|
|
1641
1649
|
// when `ingest: true`. The server owns its lifecycle; CLI just toggles.
|
|
1642
1650
|
const handle = await createServer({
|
|
@@ -1644,8 +1652,7 @@ function main() {
|
|
|
1644
1652
|
host,
|
|
1645
1653
|
port,
|
|
1646
1654
|
ingest: options.ingest !== false,
|
|
1647
|
-
webDir
|
|
1648
|
-
ssr: serveUi,
|
|
1655
|
+
webDir,
|
|
1649
1656
|
verbose: false,
|
|
1650
1657
|
});
|
|
1651
1658
|
console.error(chalk.bold('\nSpecShip Desktop server\n'));
|
|
@@ -1658,7 +1665,7 @@ function main() {
|
|
|
1658
1665
|
console.error(chalk.dim(' analytics endpoints will return 409 until one is selected'));
|
|
1659
1666
|
}
|
|
1660
1667
|
if (serveUi) {
|
|
1661
|
-
console.error(chalk.green((0, glyphs_1.getGlyphs)().ok) + ` Dashboard: ${handle.url}
|
|
1668
|
+
console.error(chalk.green((0, glyphs_1.getGlyphs)().ok) + ` Dashboard: ${handle.url}/`);
|
|
1662
1669
|
}
|
|
1663
1670
|
if (options.ingest !== false) {
|
|
1664
1671
|
console.error(chalk.dim(' Claude Code transcript ingest watcher active'));
|
|
@@ -2892,6 +2899,35 @@ function main() {
|
|
|
2892
2899
|
cg.close();
|
|
2893
2900
|
}
|
|
2894
2901
|
});
|
|
2902
|
+
/**
|
|
2903
|
+
* specship update — self-update to the latest release (CLI-UPDATE-DOC).
|
|
2904
|
+
*/
|
|
2905
|
+
program
|
|
2906
|
+
.command('update')
|
|
2907
|
+
.description('Update SpecShip to the latest released version')
|
|
2908
|
+
.option('--check', 'Report whether an update is available without installing anything')
|
|
2909
|
+
.action(async (options) => {
|
|
2910
|
+
const installDir = process.env.SPECSHIP_INSTALL_DIR || path.join(os.homedir(), '.specship');
|
|
2911
|
+
const binDir = process.env.SPECSHIP_BIN_DIR || path.join(os.homedir(), '.local', 'bin');
|
|
2912
|
+
const result = await (0, updater_1.runUpdate)({
|
|
2913
|
+
currentVersion: packageJson.version,
|
|
2914
|
+
// __dirname is the resolved location of the running specship.js —
|
|
2915
|
+
// under ~/.specship for a bundle install, under node_modules for npm.
|
|
2916
|
+
detect: () => (0, updater_1.detectInstallMethod)(__dirname, installDir),
|
|
2917
|
+
resolveLatest: (method) => (0, resolve_latest_1.resolveLatestVersion)(method),
|
|
2918
|
+
runInstaller: (method) => (0, run_installer_1.runInstaller)(method, { installDir, binDir }),
|
|
2919
|
+
installDir,
|
|
2920
|
+
binDir,
|
|
2921
|
+
}, { check: options.check });
|
|
2922
|
+
for (const line of result.lines) {
|
|
2923
|
+
if (result.exitCode === 0)
|
|
2924
|
+
info(line);
|
|
2925
|
+
else
|
|
2926
|
+
warn(line);
|
|
2927
|
+
}
|
|
2928
|
+
if (result.exitCode !== 0)
|
|
2929
|
+
process.exit(result.exitCode);
|
|
2930
|
+
});
|
|
2895
2931
|
// Parse and run
|
|
2896
2932
|
program.parse();
|
|
2897
2933
|
} // end main()
|