open-wiki-spec 0.1.0 → 0.2.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/LICENSE +21 -0
- package/README.md +73 -16
- package/bin/open-wiki-spec.js +0 -0
- package/dist/cli/commands/apply.d.ts.map +1 -1
- package/dist/cli/commands/apply.js +26 -5
- package/dist/cli/commands/apply.js.map +1 -1
- package/dist/cli/commands/archive.d.ts +1 -0
- package/dist/cli/commands/archive.d.ts.map +1 -1
- package/dist/cli/commands/archive.js +12 -4
- package/dist/cli/commands/archive.js.map +1 -1
- package/dist/cli/commands/continue.d.ts.map +1 -1
- package/dist/cli/commands/continue.js +8 -4
- package/dist/cli/commands/continue.js.map +1 -1
- package/dist/cli/commands/error-handler.d.ts +6 -0
- package/dist/cli/commands/error-handler.d.ts.map +1 -0
- package/dist/cli/commands/error-handler.js +15 -0
- package/dist/cli/commands/error-handler.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +12 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +3 -3
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +5 -1
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/propose.d.ts.map +1 -1
- package/dist/cli/commands/propose.js +20 -3
- package/dist/cli/commands/propose.js.map +1 -1
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +25 -20
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/status.d.ts +7 -2
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +123 -53
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/verify.d.ts +3 -0
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +6 -8
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/index.js +3 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/init-engine.d.ts.map +1 -1
- package/dist/cli/init/init-engine.js +65 -0
- package/dist/cli/init/init-engine.js.map +1 -1
- package/dist/cli/init/meta-files.d.ts.map +1 -1
- package/dist/cli/init/meta-files.js +8 -12
- package/dist/cli/init/meta-files.js.map +1 -1
- package/dist/cli/init/skill-generator.d.ts.map +1 -1
- package/dist/cli/init/skill-generator.js +78 -19
- package/dist/cli/init/skill-generator.js.map +1 -1
- package/dist/cli/init/types.d.ts +3 -0
- package/dist/cli/init/types.d.ts.map +1 -1
- package/dist/core/embedding/cache.d.ts +28 -0
- package/dist/core/embedding/cache.d.ts.map +1 -0
- package/dist/core/embedding/cache.js +53 -0
- package/dist/core/embedding/cache.js.map +1 -0
- package/dist/core/embedding/embedder.d.ts +26 -0
- package/dist/core/embedding/embedder.d.ts.map +1 -0
- package/dist/core/embedding/embedder.js +51 -0
- package/dist/core/embedding/embedder.js.map +1 -0
- package/dist/core/embedding/index.d.ts +5 -0
- package/dist/core/embedding/index.d.ts.map +1 -0
- package/dist/core/embedding/index.js +5 -0
- package/dist/core/embedding/index.js.map +1 -0
- package/dist/core/embedding/semantic-recall.d.ts +18 -0
- package/dist/core/embedding/semantic-recall.d.ts.map +1 -0
- package/dist/core/embedding/semantic-recall.js +37 -0
- package/dist/core/embedding/semantic-recall.js.map +1 -0
- package/dist/core/embedding/similarity.d.ts +5 -0
- package/dist/core/embedding/similarity.d.ts.map +1 -0
- package/dist/core/embedding/similarity.js +21 -0
- package/dist/core/embedding/similarity.js.map +1 -0
- package/dist/core/index/build.d.ts.map +1 -1
- package/dist/core/index/build.js +38 -3
- package/dist/core/index/build.js.map +1 -1
- package/dist/core/index/resolve.d.ts +2 -1
- package/dist/core/index/resolve.d.ts.map +1 -1
- package/dist/core/index/resolve.js +17 -4
- package/dist/core/index/resolve.js.map +1 -1
- package/dist/core/index/scan.js +1 -1
- package/dist/core/index/scan.js.map +1 -1
- package/dist/core/index/validate.d.ts +2 -1
- package/dist/core/index/validate.d.ts.map +1 -1
- package/dist/core/index/validate.js +23 -2
- package/dist/core/index/validate.js.map +1 -1
- package/dist/core/migrate/change-converter.js +5 -5
- package/dist/core/migrate/change-converter.js.map +1 -1
- package/dist/core/migrate/migrate.js +1 -1
- package/dist/core/migrate/migrate.js.map +1 -1
- package/dist/core/migrate/spec-converter.js +1 -2
- package/dist/core/migrate/spec-converter.js.map +1 -1
- package/dist/core/parser/wikilink-parser.d.ts.map +1 -1
- package/dist/core/parser/wikilink-parser.js +13 -1
- package/dist/core/parser/wikilink-parser.js.map +1 -1
- package/dist/core/retrieval/constants.d.ts +4 -1
- package/dist/core/retrieval/constants.d.ts.map +1 -1
- package/dist/core/retrieval/constants.js +3 -0
- package/dist/core/retrieval/constants.js.map +1 -1
- package/dist/core/retrieval/retrieve.d.ts +6 -0
- package/dist/core/retrieval/retrieve.d.ts.map +1 -1
- package/dist/core/retrieval/retrieve.js +17 -4
- package/dist/core/retrieval/retrieve.js.map +1 -1
- package/dist/core/retrieval/scoring.d.ts +3 -2
- package/dist/core/retrieval/scoring.d.ts.map +1 -1
- package/dist/core/retrieval/scoring.js +42 -3
- package/dist/core/retrieval/scoring.js.map +1 -1
- package/dist/core/schema/base.schema.js +1 -1
- package/dist/core/schema/base.schema.js.map +1 -1
- package/dist/core/schema/requirement.d.ts +2 -2
- package/dist/core/workflow/apply/apply.d.ts.map +1 -1
- package/dist/core/workflow/apply/apply.js +265 -15
- package/dist/core/workflow/apply/apply.js.map +1 -1
- package/dist/core/workflow/apply/feature-updater.d.ts +9 -5
- package/dist/core/workflow/apply/feature-updater.d.ts.map +1 -1
- package/dist/core/workflow/apply/feature-updater.js +130 -8
- package/dist/core/workflow/apply/feature-updater.js.map +1 -1
- package/dist/core/workflow/apply/types.d.ts +5 -0
- package/dist/core/workflow/apply/types.d.ts.map +1 -1
- package/dist/core/workflow/continue/continue.d.ts +1 -0
- package/dist/core/workflow/continue/continue.d.ts.map +1 -1
- package/dist/core/workflow/continue/continue.js +94 -34
- package/dist/core/workflow/continue/continue.js.map +1 -1
- package/dist/core/workflow/continue/types.d.ts +1 -1
- package/dist/core/workflow/continue/types.d.ts.map +1 -1
- package/dist/core/workflow/propose/note-creator.d.ts +2 -0
- package/dist/core/workflow/propose/note-creator.d.ts.map +1 -1
- package/dist/core/workflow/propose/note-creator.js +33 -10
- package/dist/core/workflow/propose/note-creator.js.map +1 -1
- package/dist/core/workflow/propose/propose.d.ts.map +1 -1
- package/dist/core/workflow/propose/propose.js +131 -14
- package/dist/core/workflow/propose/propose.js.map +1 -1
- package/dist/core/workflow/propose/query-normalizer.d.ts +7 -1
- package/dist/core/workflow/propose/query-normalizer.d.ts.map +1 -1
- package/dist/core/workflow/propose/query-normalizer.js +52 -2
- package/dist/core/workflow/propose/query-normalizer.js.map +1 -1
- package/dist/core/workflow/propose/types.d.ts +7 -3
- package/dist/core/workflow/propose/types.d.ts.map +1 -1
- package/dist/core/workflow/query/query-note-creator.js +1 -1
- package/dist/core/workflow/query/query-note-creator.js.map +1 -1
- package/dist/core/workflow/query/query-search.d.ts +3 -1
- package/dist/core/workflow/query/query-search.d.ts.map +1 -1
- package/dist/core/workflow/query/query-search.js +6 -2
- package/dist/core/workflow/query/query-search.js.map +1 -1
- package/dist/core/workflow/verify/completeness.d.ts +2 -2
- package/dist/core/workflow/verify/completeness.d.ts.map +1 -1
- package/dist/core/workflow/verify/completeness.js +101 -5
- package/dist/core/workflow/verify/completeness.js.map +1 -1
- package/dist/core/workflow/verify/correctness.d.ts +6 -0
- package/dist/core/workflow/verify/correctness.d.ts.map +1 -1
- package/dist/core/workflow/verify/correctness.js +35 -0
- package/dist/core/workflow/verify/correctness.js.map +1 -1
- package/dist/core/workflow/verify/index.d.ts +2 -2
- package/dist/core/workflow/verify/index.d.ts.map +1 -1
- package/dist/core/workflow/verify/index.js +2 -2
- package/dist/core/workflow/verify/index.js.map +1 -1
- package/dist/core/workflow/verify/vault-integrity.d.ts +11 -0
- package/dist/core/workflow/verify/vault-integrity.d.ts.map +1 -1
- package/dist/core/workflow/verify/vault-integrity.js +47 -2
- package/dist/core/workflow/verify/vault-integrity.js.map +1 -1
- package/dist/core/workflow/verify/verify.d.ts.map +1 -1
- package/dist/core/workflow/verify/verify.js +6 -2
- package/dist/core/workflow/verify/verify.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/types/index-record.d.ts +2 -1
- package/dist/types/index-record.d.ts.map +1 -1
- package/dist/types/retrieval.d.ts +2 -0
- package/dist/types/retrieval.d.ts.map +1 -1
- package/dist/utils/path-safety.d.ts +8 -0
- package/dist/utils/path-safety.d.ts.map +1 -0
- package/dist/utils/path-safety.js +15 -0
- package/dist/utils/path-safety.js.map +1 -0
- package/package.json +4 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 sh940701
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<!-- Badges -->
|
|
6
6
|
[](https://www.npmjs.com/package/open-wiki-spec)
|
|
7
7
|
[](./LICENSE)
|
|
8
|
-
[](#)
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -128,10 +128,12 @@ The retrieval pipeline uses **weighted scoring signals**, not free-form LLM judg
|
|
|
128
128
|
|--------|--------|
|
|
129
129
|
| Exact title match | +40 |
|
|
130
130
|
| Alias match | +35 |
|
|
131
|
+
| Semantic similarity | +30 |
|
|
131
132
|
| Active change overlap | +25 |
|
|
132
133
|
| Same system | +20 |
|
|
133
134
|
| Same feature link | +20 |
|
|
134
|
-
|
|
|
135
|
+
| Partial title match | +20 |
|
|
136
|
+
| Full-text match | +15 / +8 |
|
|
135
137
|
| Shared source | +10 |
|
|
136
138
|
| Shared decision | +10 |
|
|
137
139
|
| Backlink proximity | +10 |
|
|
@@ -145,7 +147,9 @@ Classification is rule-based with thresholds:
|
|
|
145
147
|
| `new_feature` | Nothing similar found. Create new Feature + Change. |
|
|
146
148
|
| `needs_confirmation` | Ambiguous results. Ask the user to choose. |
|
|
147
149
|
|
|
148
|
-
Results are deterministic, explainable, and debuggable.
|
|
150
|
+
Results are deterministic, explainable, and debuggable.
|
|
151
|
+
|
|
152
|
+
**v0.2.0+** also includes **semantic search** via local embeddings (`multilingual-e5-small`). When available, a 10th scoring signal (`semantic_similarity: +30`) catches meaning-based matches that keyword search misses — e.g., "새 사용자를 받고 싶어" finds "회원가입" Feature even without keyword overlap. The embedding model downloads automatically on first use (~113MB, cached locally). Use `--keywords` to let the agent pass refined search terms directly.
|
|
149
153
|
|
|
150
154
|
## Key differences from OpenSpec
|
|
151
155
|
|
|
@@ -154,7 +158,7 @@ Results are deterministic, explainable, and debuggable. No embedding service req
|
|
|
154
158
|
| Storage | Fixed filesystem directories | Typed markdown vault with frontmatter + wikilinks |
|
|
155
159
|
| Canonical spec | `spec.md` file | `Feature` note with `## Requirements` section |
|
|
156
160
|
| Identity | Filepath/filename | Immutable `id` in frontmatter (survives rename/move) |
|
|
157
|
-
| Similarity detection | Free-form LLM reasoning | Deterministic retrieval
|
|
161
|
+
| Similarity detection | Free-form LLM reasoning | Deterministic retrieval + semantic embedding (multilingual) |
|
|
158
162
|
| Pre-investigation | Prompt-driven, varies by session | Mandatory preflight scan before `propose` |
|
|
159
163
|
| Note relationships | Directory nesting | Typed graph: wikilinks, backlinks, frontmatter links |
|
|
160
164
|
| Completion model | Archive-first file movement | Status lifecycle + deferred archive |
|
|
@@ -269,26 +273,79 @@ ows verify
|
|
|
269
273
|
| `/opsx:explore` | `/ows-query` | results saved as Query notes |
|
|
270
274
|
| `/opsx:archive` | `/ows-archive` | status-first, then file move |
|
|
271
275
|
|
|
272
|
-
See the full
|
|
276
|
+
See the full migration guide (available in `docs/migration.md` when building from source) for detailed steps, conversion rules, and post-migration workflow.
|
|
273
277
|
|
|
274
278
|
## Documentation
|
|
275
279
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
-
|
|
279
|
-
-
|
|
280
|
-
-
|
|
281
|
-
-
|
|
282
|
-
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
-
|
|
286
|
-
-
|
|
280
|
+
> **Note:** Full documentation is available when building from source. Run `npm run build` to generate the `docs/` directory, or browse the module-level source code directly.
|
|
281
|
+
|
|
282
|
+
- Installation -- prerequisites, install methods, build from source
|
|
283
|
+
- Getting Started -- step-by-step tutorial
|
|
284
|
+
- Core Concepts -- note types, requirements, delta summary, lifecycle
|
|
285
|
+
- CLI Commands -- all 10 commands + 10 skill files
|
|
286
|
+
- Migration Guide -- OpenSpec to ows conversion
|
|
287
|
+
- Subagent Architecture -- how retrieval works
|
|
288
|
+
- Module Reference:
|
|
289
|
+
- Types | Schemas | Vault Parser
|
|
290
|
+
- Index Engine | Retrieval Engine | Sequencing Engine
|
|
291
|
+
- Propose | Continue | Apply
|
|
292
|
+
- Verify | Query | CLI Init
|
|
293
|
+
|
|
294
|
+
## Full lifecycle example
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
# 1. Initialize
|
|
298
|
+
ows init
|
|
299
|
+
|
|
300
|
+
# 2. Propose a change (preflight retrieval runs automatically)
|
|
301
|
+
ows propose "Add user authentication with email/password" --keywords "auth,login,password"
|
|
302
|
+
|
|
303
|
+
# 3. Fill in the Change sections (Why, Delta Summary, Tasks, Validation)
|
|
304
|
+
# Then advance through the lifecycle:
|
|
305
|
+
ows continue <changeId> # proposed → planned
|
|
306
|
+
ows continue <changeId> # planned → in_progress
|
|
307
|
+
|
|
308
|
+
# 4. Complete tasks, then apply to canonical Feature
|
|
309
|
+
ows apply <changeId>
|
|
310
|
+
|
|
311
|
+
# 5. Fill in any ADDED/MODIFIED markers in the Feature note
|
|
312
|
+
# Then verify everything is consistent
|
|
313
|
+
ows verify
|
|
314
|
+
|
|
315
|
+
# 6. Archive the completed change
|
|
316
|
+
ows archive <changeId>
|
|
317
|
+
```
|
|
287
318
|
|
|
288
319
|
## Requirements
|
|
289
320
|
|
|
290
321
|
- Node.js >= 20.0.0
|
|
291
322
|
|
|
323
|
+
## Contributing
|
|
324
|
+
|
|
325
|
+
**We actively welcome contributions!** Whether it's bug reports, feature ideas, documentation improvements, or code — all forms of participation are appreciated.
|
|
326
|
+
|
|
327
|
+
- **Issues**: Found a bug or have a suggestion? [Open an issue](https://github.com/sh940701/open-wiki-spec/issues).
|
|
328
|
+
- **Pull Requests**: Fork the repo, make your changes, and submit a PR. We review promptly.
|
|
329
|
+
- **Discussions**: Questions about architecture, design decisions, or use cases? Start a discussion in Issues.
|
|
330
|
+
|
|
331
|
+
### Getting started for contributors
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
git clone https://github.com/sh940701/open-wiki-spec.git
|
|
335
|
+
cd open-wiki-spec
|
|
336
|
+
npm install
|
|
337
|
+
npm run build
|
|
338
|
+
npm test # 805+ tests should pass
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Areas where help is especially welcome
|
|
342
|
+
|
|
343
|
+
- **Semantic search improvements** — better embedding models, multilingual support
|
|
344
|
+
- **Obsidian plugin** — native Obsidian integration for graph view, Dataview queries
|
|
345
|
+
- **Additional agent runtime support** — Cursor, Codex, Gemini CLI adapters
|
|
346
|
+
- **Documentation** — tutorials, examples, translations
|
|
347
|
+
- **Testing** — edge cases, performance benchmarks, real-world usage reports
|
|
348
|
+
|
|
292
349
|
## License
|
|
293
350
|
|
|
294
351
|
[MIT](./LICENSE)
|
package/bin/open-wiki-spec.js
CHANGED
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/apply.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/apply.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2E3D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { handleCliError } from "./error-handler.js";
|
|
1
2
|
/**
|
|
2
3
|
* CLI handler for `ows apply`.
|
|
3
4
|
*/
|
|
@@ -11,13 +12,15 @@ export function registerApplyCommand(program) {
|
|
|
11
12
|
.option('--json', 'Output result as JSON')
|
|
12
13
|
.option('--dry-run', 'Validate without writing')
|
|
13
14
|
.option('--force-stale', 'Apply even with stale base fingerprints')
|
|
15
|
+
.option('--no-auto-transition', 'Do not auto-transition to applied when pending agent ops exist')
|
|
16
|
+
.option('--no-log', 'Skip appending to log.md (useful for CI/team workflows)')
|
|
14
17
|
.action(async (changeId, opts) => {
|
|
15
18
|
try {
|
|
16
19
|
const vaultPath = discoverVaultPath();
|
|
17
20
|
const { buildIndex } = await import('../../core/index/index.js');
|
|
18
21
|
const { parseNote } = await import('../../core/parser/index.js');
|
|
19
22
|
const { applyChange } = await import('../../core/workflow/apply/index.js');
|
|
20
|
-
const { writeFileSync, readFileSync, existsSync, mkdirSync, renameSync } = await import('node:fs');
|
|
23
|
+
const { writeFileSync, readFileSync, existsSync, mkdirSync, renameSync, unlinkSync } = await import('node:fs');
|
|
21
24
|
const { dirname } = await import('node:path');
|
|
22
25
|
const index = await buildIndex(vaultPath);
|
|
23
26
|
const result = applyChange({
|
|
@@ -25,6 +28,7 @@ export function registerApplyCommand(program) {
|
|
|
25
28
|
vaultRoot: vaultPath,
|
|
26
29
|
dryRun: opts.dryRun,
|
|
27
30
|
forceStale: opts.forceStale,
|
|
31
|
+
noAutoTransition: opts.autoTransition === false,
|
|
28
32
|
}, index, {
|
|
29
33
|
parseNote,
|
|
30
34
|
writeFile: (p, c) => writeFileSync(p, c, 'utf-8'),
|
|
@@ -32,16 +36,31 @@ export function registerApplyCommand(program) {
|
|
|
32
36
|
fileExists: (p) => existsSync(p),
|
|
33
37
|
moveFile: (from, to) => renameSync(from, to),
|
|
34
38
|
ensureDir: (d) => mkdirSync(d, { recursive: true }),
|
|
39
|
+
deleteFile: (p) => unlinkSync(p),
|
|
35
40
|
});
|
|
36
|
-
|
|
41
|
+
const skipLog = opts.log === false || process.env.OWS_NO_LOG === '1';
|
|
42
|
+
if (result.statusTransitioned && !skipLog) {
|
|
37
43
|
appendLogEntry(path.join(vaultPath, 'wiki'), 'apply', changeId);
|
|
38
44
|
}
|
|
39
45
|
if (opts.json) {
|
|
40
46
|
console.log(JSON.stringify(result, (_key, value) => value instanceof Map ? Object.fromEntries(value) : value, 2));
|
|
41
47
|
}
|
|
42
48
|
else {
|
|
43
|
-
if (
|
|
49
|
+
if (opts.dryRun) {
|
|
50
|
+
console.log(`[dry-run] Change "${changeId}" validated.`);
|
|
51
|
+
for (const fr of result.featureResults) {
|
|
52
|
+
if (fr.requiresWrite && fr.updatedContent) {
|
|
53
|
+
console.log(` Would modify: ${fr.featurePath}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (result.success) {
|
|
44
58
|
console.log(`Change "${changeId}" applied successfully.`);
|
|
59
|
+
if (result.modifiedFiles && result.modifiedFiles.length > 0) {
|
|
60
|
+
for (const f of result.modifiedFiles) {
|
|
61
|
+
console.log(` Modified: ${f}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
45
64
|
}
|
|
46
65
|
else {
|
|
47
66
|
console.log(`Change "${changeId}" could not be applied.`);
|
|
@@ -50,10 +69,12 @@ export function registerApplyCommand(program) {
|
|
|
50
69
|
}
|
|
51
70
|
}
|
|
52
71
|
}
|
|
72
|
+
if (!opts.dryRun && !result.success) {
|
|
73
|
+
process.exitCode = 1;
|
|
74
|
+
}
|
|
53
75
|
}
|
|
54
76
|
catch (err) {
|
|
55
|
-
|
|
56
|
-
process.exitCode = 1;
|
|
77
|
+
handleCliError(err, opts.json);
|
|
57
78
|
}
|
|
58
79
|
});
|
|
59
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/cli/commands/apply.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/cli/commands/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export interface ArchiveResult {
|
|
|
12
12
|
*/
|
|
13
13
|
export declare function archiveChange(changeId: string, index: VaultIndex, vaultPath: string, options?: {
|
|
14
14
|
force?: boolean;
|
|
15
|
+
noLog?: boolean;
|
|
15
16
|
}): ArchiveResult;
|
|
16
17
|
/**
|
|
17
18
|
* Register the archive command with Commander.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C,aAAa,CAoDf;AAGD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,WAAW,EAAE,OAAO,GAAG,IAAI,CAkCjF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { handleCliError } from "./error-handler.js";
|
|
1
2
|
/**
|
|
2
3
|
* Archive command: moves applied Changes to 99-archive/.
|
|
3
4
|
*/
|
|
@@ -5,6 +6,7 @@ import * as fs from 'node:fs';
|
|
|
5
6
|
import * as path from 'node:path';
|
|
6
7
|
import { verify } from '../../core/workflow/verify/verify.js';
|
|
7
8
|
import { appendLogEntry } from '../init/meta-files.js';
|
|
9
|
+
import { assertInsideVault } from '../../utils/path-safety.js';
|
|
8
10
|
/**
|
|
9
11
|
* Archive an applied change.
|
|
10
12
|
* Moves the file from 04-changes/ to 99-archive/ and appends to log.md.
|
|
@@ -34,11 +36,16 @@ export function archiveChange(changeId, index, vaultPath, options) {
|
|
|
34
36
|
// Resolve to absolute paths using vaultPath (project root)
|
|
35
37
|
const oldAbsPath = path.join(vaultPath, oldRelPath);
|
|
36
38
|
const newAbsPath = path.join(vaultPath, newRelPath);
|
|
39
|
+
assertInsideVault(oldAbsPath, vaultPath);
|
|
40
|
+
assertInsideVault(newAbsPath, vaultPath);
|
|
37
41
|
// Ensure 99-archive/ exists
|
|
38
42
|
fs.mkdirSync(path.join(vaultPath, 'wiki', '99-archive'), { recursive: true });
|
|
39
43
|
fs.renameSync(oldAbsPath, newAbsPath);
|
|
40
44
|
// Append to log.md (appendLogEntry expects the wiki directory)
|
|
41
|
-
|
|
45
|
+
const skipLog = options?.noLog || process.env.OWS_NO_LOG === '1';
|
|
46
|
+
if (!skipLog) {
|
|
47
|
+
appendLogEntry(path.join(vaultPath, 'wiki'), 'archive', changeId);
|
|
48
|
+
}
|
|
42
49
|
return {
|
|
43
50
|
changeId,
|
|
44
51
|
oldPath: oldRelPath,
|
|
@@ -56,13 +63,15 @@ export function registerArchiveCommand(program) {
|
|
|
56
63
|
.description('Archive an applied Change to 99-archive/')
|
|
57
64
|
.option('--json', 'Output result as JSON')
|
|
58
65
|
.option('--force', 'Archive even if verify finds errors')
|
|
66
|
+
.option('--no-log', 'Skip appending to log.md (useful for CI/team workflows)')
|
|
59
67
|
.action(async (changeId, opts) => {
|
|
60
68
|
try {
|
|
61
69
|
const { discoverVaultPath } = await import('../vault-discovery.js');
|
|
62
70
|
const { buildIndex } = await import('../../core/index/index.js');
|
|
63
71
|
const vaultPath = discoverVaultPath();
|
|
64
72
|
const index = await buildIndex(vaultPath);
|
|
65
|
-
const
|
|
73
|
+
const noLog = opts.log === false || process.env.OWS_NO_LOG === '1';
|
|
74
|
+
const result = archiveChange(changeId, index, vaultPath, { force: opts.force, noLog });
|
|
66
75
|
if (opts.json) {
|
|
67
76
|
console.log(JSON.stringify(result, null, 2));
|
|
68
77
|
}
|
|
@@ -79,8 +88,7 @@ export function registerArchiveCommand(program) {
|
|
|
79
88
|
}
|
|
80
89
|
}
|
|
81
90
|
catch (err) {
|
|
82
|
-
|
|
83
|
-
process.exitCode = 1;
|
|
91
|
+
handleCliError(err, opts.json);
|
|
84
92
|
}
|
|
85
93
|
});
|
|
86
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/continue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/continue.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsC9D"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { handleCliError } from "./error-handler.js";
|
|
1
2
|
import { discoverVaultPath } from '../vault-discovery.js';
|
|
2
3
|
export function registerContinueCommand(program) {
|
|
3
4
|
program
|
|
4
5
|
.command('continue [changeId]')
|
|
5
6
|
.description('Continue work on an existing Change')
|
|
6
7
|
.option('--json', 'Output result as JSON')
|
|
8
|
+
.option('--dry-run', 'Compute next action without executing transitions')
|
|
7
9
|
.action(async (changeId, opts) => {
|
|
8
10
|
try {
|
|
9
11
|
const vaultPath = discoverVaultPath();
|
|
@@ -18,17 +20,19 @@ export function registerContinueCommand(program) {
|
|
|
18
20
|
parseNote,
|
|
19
21
|
writeFile: (p, c) => writeFileSync(p, c, 'utf-8'),
|
|
20
22
|
readFile: (p) => readFileSync(p, 'utf-8'),
|
|
21
|
-
},
|
|
23
|
+
}, {
|
|
24
|
+
...(changeId ? { changeName: changeId } : {}),
|
|
25
|
+
...(opts.dryRun ? { dryRun: true } : {}),
|
|
26
|
+
});
|
|
22
27
|
if (opts.json) {
|
|
23
|
-
console.log(JSON.stringify(result,
|
|
28
|
+
console.log(JSON.stringify(result, (_key, value) => value instanceof Map ? Object.fromEntries(value) : value, 2));
|
|
24
29
|
}
|
|
25
30
|
else {
|
|
26
31
|
console.log(result.summary);
|
|
27
32
|
}
|
|
28
33
|
}
|
|
29
34
|
catch (err) {
|
|
30
|
-
|
|
31
|
-
process.exitCode = 1;
|
|
35
|
+
handleCliError(err, opts.json);
|
|
32
36
|
}
|
|
33
37
|
});
|
|
34
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../../src/cli/commands/continue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../../src/cli/commands/continue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,WAAW,EAAE,mDAAmD,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,QAA4B,EAAE,IAA0C,EAAE,EAAE;QACzF,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;YACtC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YACjE,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;YAC7E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YACjE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;YACjF,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAEhE,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE;gBACnC,iBAAiB;gBACjB,SAAS;gBACT,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;gBACjD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;aAC1C,EAAE;gBACD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACjD,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAC1D,CAAC,CAAC,CAAC,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/error-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAQjE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common CLI error handler.
|
|
3
|
+
* Outputs JSON error when --json is set, plaintext otherwise.
|
|
4
|
+
*/
|
|
5
|
+
export function handleCliError(err, json) {
|
|
6
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
7
|
+
if (json) {
|
|
8
|
+
console.log(JSON.stringify({ error: true, message }, null, 2));
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
console.error(`Error: ${message}`);
|
|
12
|
+
}
|
|
13
|
+
process.exitCode = 1;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/cli/commands/error-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,IAAc;IACzD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqC1D"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import { handleCliError } from "./error-handler.js";
|
|
1
2
|
import { initVault } from '../init/init-engine.js';
|
|
2
3
|
export function registerInitCommand(program) {
|
|
3
4
|
program
|
|
4
5
|
.command('init [path]')
|
|
5
6
|
.description('Initialize a new open-wiki-spec vault')
|
|
6
7
|
.option('--force', 'Force re-initialization, recreating meta files')
|
|
8
|
+
.option('--skip-seed', 'Skip creating seed notes')
|
|
7
9
|
.option('--json', 'Output result as JSON')
|
|
8
10
|
.action(async (targetPath, opts) => {
|
|
9
11
|
try {
|
|
10
|
-
const result = await initVault({ path: targetPath, force: opts.force });
|
|
12
|
+
const result = await initVault({ path: targetPath, force: opts.force, skipSeed: opts.skipSeed });
|
|
11
13
|
if (opts.json) {
|
|
12
14
|
console.log(JSON.stringify(result, null, 2));
|
|
13
15
|
}
|
|
@@ -20,16 +22,23 @@ export function registerInitCommand(program) {
|
|
|
20
22
|
}
|
|
21
23
|
console.log(` Directories: ${result.directoriesCreated.length} created`);
|
|
22
24
|
console.log(` Meta files: ${result.metaFilesCreated.length} created`);
|
|
25
|
+
console.log(` Seed notes: ${result.seedFilesCreated.length} created`);
|
|
23
26
|
console.log(` Skill files: ${result.skillFilesGenerated.length} generated`);
|
|
24
27
|
if (result.warnings.length > 0) {
|
|
25
28
|
for (const w of result.warnings)
|
|
26
29
|
console.log(` Warning: ${w}`);
|
|
27
30
|
}
|
|
31
|
+
if (result.mode === 'fresh') {
|
|
32
|
+
console.log('');
|
|
33
|
+
console.log('Next steps:');
|
|
34
|
+
console.log(' 1. Edit wiki/01-sources/seed-context.md with your project description');
|
|
35
|
+
console.log(' 2. Edit wiki/02-systems/default-system.md with your system boundaries');
|
|
36
|
+
console.log(' 3. Run `ows propose` to create your first feature note');
|
|
37
|
+
}
|
|
28
38
|
}
|
|
29
39
|
}
|
|
30
40
|
catch (err) {
|
|
31
|
-
|
|
32
|
-
process.exitCode = 1;
|
|
41
|
+
handleCliError(err, opts.json);
|
|
33
42
|
}
|
|
34
43
|
});
|
|
35
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,SAAS,EAAE,gDAAgD,CAAC;SACnE,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,UAA8B,EAAE,IAA6D,EAAE,EAAE;QAC9G,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACtD,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,kBAAkB,CAAC,MAAM,UAAU,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,gBAAgB,CAAC,MAAM,UAAU,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,gBAAgB,CAAC,MAAM,UAAU,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,mBAAmB,CAAC,MAAM,YAAY,CAAC,CAAC;gBAC7E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ;wBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;gBAClE,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;oBACvF,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;oBACvF,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;IACrC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkC1D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,CA8CnG"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { handleCliError } from "./error-handler.js";
|
|
1
2
|
import { discoverVaultPath } from '../vault-discovery.js';
|
|
2
3
|
export function registerListCommand(program) {
|
|
3
4
|
program
|
|
@@ -25,14 +26,13 @@ export function registerListCommand(program) {
|
|
|
25
26
|
const extra = item.taskProgress
|
|
26
27
|
? ` [${item.taskProgress.completed}/${item.taskProgress.total}]`
|
|
27
28
|
: '';
|
|
28
|
-
console.log(` ${item.
|
|
29
|
+
console.log(` ${item.id.padEnd(24)} ${item.type.padEnd(8)} ${item.status.padEnd(12)} ${item.title}${extra}`);
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
catch (err) {
|
|
34
|
-
|
|
35
|
-
process.exitCode = 1;
|
|
35
|
+
handleCliError(err, opts.json);
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+C7D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { handleCliError } from "./error-handler.js";
|
|
1
2
|
import { migrate, planMigration } from '../../core/migrate/migrate.js';
|
|
2
3
|
export function registerMigrateCommand(program) {
|
|
3
4
|
program
|
|
@@ -31,6 +32,9 @@ export function registerMigrateCommand(program) {
|
|
|
31
32
|
else {
|
|
32
33
|
printResult(result);
|
|
33
34
|
}
|
|
35
|
+
if (result.errors.length > 0) {
|
|
36
|
+
process.exitCode = 1;
|
|
37
|
+
}
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
40
|
catch (err) {
|
|
@@ -38,7 +42,7 @@ export function registerMigrateCommand(program) {
|
|
|
38
42
|
console.log(JSON.stringify({ error: err.message }));
|
|
39
43
|
}
|
|
40
44
|
else {
|
|
41
|
-
|
|
45
|
+
handleCliError(err, opts.json);
|
|
42
46
|
}
|
|
43
47
|
process.exitCode = 1;
|
|
44
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propose.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/propose.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"propose.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/propose.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+E7D"}
|