Commit Graph

11 Commits

Author SHA1 Message Date
xiaoju 736d7e7374 chore: 测试框架从 bun:test 迁移到 vitest
- 36 个 test 文件 bun:test → vitest
- Bun.spawn() → execFileSync('tsx', ...)
- Bun.file() → readFileSync
- import.meta.dir → import.meta.dirname (tests) / __dirname (CLI source)
- 删除 bun-types devDep
- 添加 vitest + tsx devDep
- CLI shebang bun → node
- 30/36 test files pass, 558/617 tests pass

Refs #62
2026-06-03 04:11:10 +00:00
xiaoju 561f2a33b7 feat: add top-level ocas tag/untag commands, remove var tag
Adds `ocas tag <target> <tag>...` and `ocas untag <target> <tag>...`
top-level CLI commands operating on store.tag.* (TagStore). Targets
may be hashes or @scope/name variables (resolved via resolveHash).

The redundant `ocas var tag` subcommand is removed; `var tag` now
falls through to "Unknown var subcommand: tag".

Registers `@ocas/output/tag` and `@ocas/output/untag` schemas and
templates in bootstrap; removes `@ocas/output/var-tag`.

Closes #52

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-02 11:11:29 +00:00
xiaoju 0041fc4e23 fix(core,fs): phase 3 cleanup — drop legacy Store, sync bootstrap, dedup VarStore
- Remove legacy `Store` type with `Promise<Hash>` `put`; rename `OcasStore` → `Store`
  across @ocas/core, @ocas/fs, @ocas/cli (production + tests).
- Migrate `BootstrapCapableStore` to `CasStore`; `[BOOTSTRAP_STORE]` returns `Hash`
  synchronously.
- Make `bootstrap()` and `putSchema()` synchronous; remove `await` at all call sites.
- Extract pure VarStore helpers into `packages/core/src/var-store-helpers.ts`
  (`varKey`, `addNameIndex`, `removeNameIndex`, `extractSchema`, `checkTagLabelConflict`,
  `pushHistory`, `cloneVarRecord`, `VarRecord`); both `MemoryVarStore` (-74 lines) and
  `FsVarStore` (-63 lines) now delegate to them while keeping persistence separate.

Refs #47
2026-06-02 10:02:19 +00:00
xiaoju e53f473fc2 refactor(core): update all functions to accept OcasStore (single param)
- bootstrap(store) — uses store.cas + store.var
- gc(store) — uses store.cas + store.var
- render/renderAsync/renderDirect — uses store.cas + store.var for templates
- refs/walk/validate/getSchema/putSchema — uses store.cas
- wrapEnvelope — uses store.cas + store.var
- registerOutputTemplates — uses store.cas + store.var
- Remove VariableStore SQLite class from @ocas/core
- Zero bun:sqlite imports in core
- Update @ocas/fs and @ocas/cli to new signatures
- 560 tests pass

Fixes #41
2026-06-02 08:15:07 +00:00
xiaoju b687ff82b3 style: biome format fixes 2026-06-02 00:12:43 +00:00
xiaoju bfaa2722fc feat: enforce @scope/name format for all variable names
All variable names must now follow @scope/name pattern:
- scope: @[a-zA-Z][a-zA-Z0-9]* (e.g. @myapp, @todo)
- name: one or more segments of [a-zA-Z0-9._-]+
- @ocas/* reserved for internal use

Examples: @myapp/config, @todo/schema, @ocas/schema (builtin)
Rejected: config (no scope), foo/bar (no @), @/foo (empty scope)

Updated validateName() in core, CLI error messages, and all tests.
594 tests pass.

Fixes #29
2026-06-01 16:12:23 +00:00
xiaoju a62e18a189 docs: unify alias→variable, refactor var commands
- All docs/cards: alias → variable name
- CLAUDE.md: add Architecture Notes section
- README: fix --store→--home, add variable names section
- CLI: var commands use openStoreAndVarStore(), no double bootstrap
- Tests updated for bootstrap-seeded variables

Fixes #20
2026-06-01 12:38:25 +00:00
xiaoju 4e002572ae feat: all hash params accept variable names
All commands (get, has, verify, refs, walk, list --type, var --schema)
now resolve variable names via resolveHash(). Added 7 e2e tests.
Also fixed isHash to use Crockford Base32 charset.

Fixes #19
2026-06-01 12:00:20 +00:00
xiaoju 1e864faf56 feat: rename --store flag to --home for consistency with OCAS_HOME
CLI flag --store → --home to match OCAS_HOME env var.
Priority: --home > $OCAS_HOME > ~/.ocas

小橘 🍊(NEKO Team)
2026-06-01 08:18:55 +00:00
xiaoju 2795116776 feat: rebrand internal namespaces to @ocas/ scope
- cas_ref → ocas_ref (schema format identifier)
- @schema → @ocas/schema, @string → @ocas/string, etc. (builtin type aliases)
- @output/* → @ocas/output/* (output schema aliases)
- Guard @ocas/ namespace in var set/delete CLI commands (reserved, not user-writable)
- Template commands use varStore directly, bypassing the guard
- Update all tests to use template set --inline instead of var set @ocas/

Breaking change: all builtin schema hashes will change due to payload changes.
2026-06-01 07:59:21 +00:00
xiaoju 1edb09a8b0 feat: rebrand json-cas → OCAS (Object Content Addressable Store)
- Rename packages: @uncaged/json-cas → @ocas/core, @uncaged/json-cas-fs → @ocas/fs, @uncaged/cli-json-cas → @ocas/cli
- Rename dirs: packages/json-cas → core, json-cas-fs → fs, cli-json-cas → cli
- CLI binary: ocas (removed json-cas and ucas aliases)
- Default store: ~/.ocas (was ~/.uncaged/json-cas)
- Update all imports, tsconfig, biome, docs, tests, snapshots
- Changeset config targets @ocas org and shazhou-ww/ocas GitHub

Closes #3, Closes #4, Closes #5, Closes #6, Closes #7
2026-06-01 06:21:56 +00:00