@wayai/cli 0.2.74 → 0.2.75

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.
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * Scaffold — download and extract workspace scaffold files from R2
3
3
  *
4
- * All files from the scaffold ZIP are extracted and overwritten on every
5
- * pull/update (refresh mode). The only exception is `.wayai.yaml` which is
6
- * only written if missing (init mode) to preserve the user's hub binding.
4
+ * Most files from the scaffold ZIP are extracted and overwritten on every
5
+ * pull/update (refresh mode) so platform changes reach the workspace. The
6
+ * exceptions are `INIT_ONLY_FILES` below written once on `wayai init` (when
7
+ * missing) and never touched on `wayai update`, preserving user-owned files.
7
8
  *
8
9
  * Changes land as unstaged git modifications — the user reviews via `git diff`
9
10
  * before committing.
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * Scaffold — download and extract workspace scaffold files from R2
3
3
  *
4
- * All files from the scaffold ZIP are extracted and overwritten on every
5
- * pull/update (refresh mode). The only exception is `.wayai.yaml` which is
6
- * only written if missing (init mode) to preserve the user's hub binding.
4
+ * Most files from the scaffold ZIP are extracted and overwritten on every
5
+ * pull/update (refresh mode) so platform changes reach the workspace. The
6
+ * exceptions are `INIT_ONLY_FILES` below written once on `wayai init` (when
7
+ * missing) and never touched on `wayai update`, preserving user-owned files.
7
8
  *
8
9
  * Changes land as unstaged git modifications — the user reviews via `git diff`
9
10
  * before committing.
@@ -12,8 +13,24 @@ import * as fs from 'node:fs';
12
13
  import * as path from 'node:path';
13
14
  import { unzipSync } from 'fflate';
14
15
  import { ApiClient } from './api-client.js';
15
- /** Init-only; names must match scaffold ZIP root paths (`repositories/wayai-workspace/`). */
16
- const INIT_ONLY_FILES = ['.wayai.yaml', 'AGENTS.local.md'];
16
+ /**
17
+ * Init-only files — written on `wayai init` when missing; in refresh mode
18
+ * (`wayai update`) they are always skipped, even if the user deleted them.
19
+ * To restore a deleted init-only file, re-run `wayai init`.
20
+ *
21
+ * Names match scaffold ZIP root paths (`repositories/wayai-workspace/`); the
22
+ * membership check is case-insensitive so a case-variant ZIP entry cannot
23
+ * bypass protection on case-insensitive filesystems (macOS/APFS, Windows).
24
+ *
25
+ * `AGENTS.md` and `CLAUDE.md` ship as thin pointers to the canonical WayAI skill
26
+ * at `.wayai/skills/wayai/SKILL.md`. Treating them as init-only respects user
27
+ * customizations — once the user edits either file, `wayai update` leaves it
28
+ * alone. The skill itself (under `.wayai/skills/wayai/`) and the per-harness
29
+ * skill shims (under `.claude/`, `.opencode/`, `.agents/`) refresh on every
30
+ * update so platform changes always reach the workspace.
31
+ */
32
+ const INIT_ONLY_FILES = ['.wayai.yaml', 'AGENTS.local.md', 'AGENTS.md', 'CLAUDE.md'];
33
+ const INIT_ONLY_FILES_LC = new Set(INIT_ONLY_FILES.map((f) => f.toLowerCase()));
17
34
  export async function refreshScaffold(options) {
18
35
  const { gitRoot, apiUrl, accessToken, mode } = options;
19
36
  const client = new ApiClient({ apiUrl, accessToken });
@@ -45,8 +62,10 @@ export async function refreshScaffold(options) {
45
62
  const gitInternals = path.resolve(gitRoot, '.git');
46
63
  if (destPath === gitInternals || destPath.startsWith(gitInternals + path.sep))
47
64
  continue;
48
- // Init-only files: only write if missing
49
- if (INIT_ONLY_FILES.includes(filePath)) {
65
+ // Scaffold ZIPs only ship canonical names; case-variants are malformed.
66
+ if (INIT_ONLY_FILES_LC.has(filePath.toLowerCase())) {
67
+ if (!INIT_ONLY_FILES.includes(filePath))
68
+ continue;
50
69
  if (mode === 'refresh' || fs.existsSync(destPath))
51
70
  continue;
52
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/lib/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/lib/scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,eAAe,GAAG,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACrF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAchF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA+B;IACnE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEvD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAEtD,qCAAqC;IACrC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAE5D,kBAAkB;IAClB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAE/D,6BAA6B;IAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEnC,6BAA6B;IAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,iEAAiE;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAEvF,iDAAiD;QACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEjD,mFAAmF;QACnF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,KAAK,OAAO;YAAE,SAAS;QAEvE,mFAAmF;QACnF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QAExF,wEAAwE;QACxE,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAClD,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS;QAC9D,CAAC;QAED,aAAa;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,EAAE,CAAC;QACV,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wayai/cli",
3
- "version": "0.2.74",
3
+ "version": "0.2.75",
4
4
  "description": "WayAI CLI — sync hub configuration between local files and the platform",
5
5
  "type": "module",
6
6
  "bin": {