@sharpee/devkit 1.0.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.
Files changed (73) hide show
  1. package/cli.d.ts +3 -0
  2. package/cli.d.ts.map +1 -0
  3. package/cli.js +219 -0
  4. package/cli.js.map +1 -0
  5. package/commands/browser.d.ts +10 -0
  6. package/commands/browser.d.ts.map +1 -0
  7. package/commands/browser.js +107 -0
  8. package/commands/browser.js.map +1 -0
  9. package/commands/build.d.ts +38 -0
  10. package/commands/build.d.ts.map +1 -0
  11. package/commands/build.js +165 -0
  12. package/commands/build.js.map +1 -0
  13. package/commands/bundle.d.ts +9 -0
  14. package/commands/bundle.d.ts.map +1 -0
  15. package/commands/bundle.js +46 -0
  16. package/commands/bundle.js.map +1 -0
  17. package/commands/clean.d.ts +7 -0
  18. package/commands/clean.d.ts.map +1 -0
  19. package/commands/clean.js +31 -0
  20. package/commands/clean.js.map +1 -0
  21. package/commands/register.d.ts +5 -0
  22. package/commands/register.d.ts.map +1 -0
  23. package/commands/register.js +45 -0
  24. package/commands/register.js.map +1 -0
  25. package/commands/test-npm.d.ts +34 -0
  26. package/commands/test-npm.d.ts.map +1 -0
  27. package/commands/test-npm.js +155 -0
  28. package/commands/test-npm.js.map +1 -0
  29. package/commands/verify.d.ts +7 -0
  30. package/commands/verify.d.ts.map +1 -0
  31. package/commands/verify.js +27 -0
  32. package/commands/verify.js.map +1 -0
  33. package/commands/zifmia.d.ts +10 -0
  34. package/commands/zifmia.d.ts.map +1 -0
  35. package/commands/zifmia.js +56 -0
  36. package/commands/zifmia.js.map +1 -0
  37. package/consumer-gen.d.ts +49 -0
  38. package/consumer-gen.d.ts.map +1 -0
  39. package/consumer-gen.js +137 -0
  40. package/consumer-gen.js.map +1 -0
  41. package/index.d.ts +29 -0
  42. package/index.d.ts.map +1 -0
  43. package/index.js +55 -0
  44. package/index.js.map +1 -0
  45. package/package.json +42 -0
  46. package/registry.d.ts +33 -0
  47. package/registry.d.ts.map +1 -0
  48. package/registry.js +81 -0
  49. package/registry.js.map +1 -0
  50. package/repo.d.ts +64 -0
  51. package/repo.d.ts.map +1 -0
  52. package/repo.js +185 -0
  53. package/repo.js.map +1 -0
  54. package/standalone/build-browser.d.ts +10 -0
  55. package/standalone/build-browser.d.ts.map +1 -0
  56. package/standalone/build-browser.js +208 -0
  57. package/standalone/build-browser.js.map +1 -0
  58. package/standalone/build.d.ts +8 -0
  59. package/standalone/build.d.ts.map +1 -0
  60. package/standalone/build.js +319 -0
  61. package/standalone/build.js.map +1 -0
  62. package/standalone/ifid.d.ts +2 -0
  63. package/standalone/ifid.d.ts.map +1 -0
  64. package/standalone/ifid.js +71 -0
  65. package/standalone/ifid.js.map +1 -0
  66. package/standalone/init-browser.d.ts +10 -0
  67. package/standalone/init-browser.d.ts.map +1 -0
  68. package/standalone/init-browser.js +194 -0
  69. package/standalone/init-browser.js.map +1 -0
  70. package/standalone/init.d.ts +10 -0
  71. package/standalone/init.d.ts.map +1 -0
  72. package/standalone/init.js +183 -0
  73. package/standalone/init.js.map +1 -0
package/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
package/cli.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../../../repos/sharpee/packages/devkit/src/cli.ts"],"names":[],"mappings":""}
package/cli.js ADDED
@@ -0,0 +1,219 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /**
5
+ * cli.ts — the `sharpee` command (ADR-180; engine package @sharpee/devkit).
6
+ *
7
+ * Owner context: the single Sharpee build/test/scaffold CLI. `build` is
8
+ * **location-aware** — inside the monorepo it builds platform + bundle + in-repo
9
+ * stories; in a standalone author project it builds that project's story via its
10
+ * own toolchain (+ .sharpee + browser).
11
+ *
12
+ * Public interface: process argv -> subcommand dispatch -> process exit code.
13
+ */
14
+ const test_npm_1 = require("./commands/test-npm");
15
+ const build_1 = require("./commands/build");
16
+ const bundle_1 = require("./commands/bundle");
17
+ const clean_1 = require("./commands/clean");
18
+ const verify_1 = require("./commands/verify");
19
+ const repo_1 = require("./repo");
20
+ // Standalone (author-project) commands, absorbed from the former @sharpee/sharpee CLI.
21
+ const build_2 = require("./standalone/build");
22
+ const build_browser_1 = require("./standalone/build-browser");
23
+ const init_1 = require("./standalone/init");
24
+ const init_browser_1 = require("./standalone/init-browser");
25
+ const ifid_1 = require("./standalone/ifid");
26
+ const register_1 = require("./commands/register");
27
+ const registry_1 = require("./registry");
28
+ const node_fs_1 = require("node:fs");
29
+ const USAGE = `sharpee — Interactive Fiction build/test/scaffold CLI (ADR-180)
30
+
31
+ Usage:
32
+ sharpee build [story|path] [options] Build a story (location-aware: monorepo vs standalone)
33
+ sharpee build-browser [options] Build the browser client only
34
+ sharpee init <name> Scaffold a new story project
35
+ sharpee init-browser Add a browser client to the current project
36
+ sharpee ifid IFID utilities (generate, validate)
37
+ sharpee bundle (monorepo) Assemble dist/cli/sharpee.js
38
+ sharpee clean Remove build artifacts (dist, dist-esm, tsbuildinfo)
39
+ sharpee verify tsf build --npm + publish dry-run
40
+ sharpee test:npm <loc|name> [options] Stand up an npm consumer for a story and run its transcripts
41
+ sharpee register <location> [--name] Register a name→path mapping in ~/.sharpee/devkit
42
+ sharpee list List registered stories
43
+
44
+ build (monorepo) options:
45
+ [story|path] In-repo story name or path (stories/<n>, tutorials/<n>, or a directory)
46
+ --browser Also build the self-contained browser client (dist/web/<story>/)
47
+ --zifmia Also build the zifmia multi-user server (tools/zifmia/dist/)
48
+ --skip <pkg> Resume the platform build from this package short-name
49
+ --version <v> | --build-date <iso> | --no-version | --no-genai | --no-bundle | --esm
50
+
51
+ build (standalone, in an author project): compiles src/ + emits the .sharpee bundle and
52
+ browser client. --test also runs the project's transcripts.
53
+
54
+ test:npm options:
55
+ --local [default] | --registry | --version <range> | --staging <dir>
56
+ --transcripts <glob> | --chain | --quick | --keep
57
+
58
+ Reserved (later): test, play, bundle:story`;
59
+ /** Parse the monorepo `build` flags (positional [story] + options). */
60
+ function parseBuild(args) {
61
+ const opts = {};
62
+ let i = 0;
63
+ while (i < args.length) {
64
+ const a = args[i];
65
+ if (a === '--skip')
66
+ opts.skipTo = args[++i];
67
+ else if (a === '--version')
68
+ opts.version = args[++i];
69
+ else if (a === '--build-date')
70
+ opts.buildDate = args[++i];
71
+ else if (a === '--no-version')
72
+ opts.noVersion = true;
73
+ else if (a === '--no-genai')
74
+ opts.noGenai = true;
75
+ else if (a === '--no-bundle')
76
+ opts.bundle = false;
77
+ else if (a === '--esm')
78
+ opts.esm = true;
79
+ else if (a === '--browser')
80
+ opts.browser = true;
81
+ else if (a === '--zifmia')
82
+ opts.zifmia = true;
83
+ else if (a.startsWith('-'))
84
+ throw new Error(`unknown option: ${a}`);
85
+ else if (!opts.story)
86
+ opts.story = a;
87
+ else
88
+ throw new Error(`unexpected argument: ${a}`);
89
+ i++;
90
+ }
91
+ return opts;
92
+ }
93
+ /** Parse the `test:npm` flags after the positional <location>. */
94
+ function parseTestNpm(args) {
95
+ const opts = { location: '' };
96
+ let i = 0;
97
+ while (i < args.length) {
98
+ const a = args[i];
99
+ if (a === '--local')
100
+ opts.mode = 'local';
101
+ else if (a === '--registry')
102
+ opts.mode = 'registry';
103
+ else if (a === '--chain')
104
+ opts.chain = true;
105
+ else if (a === '--quick')
106
+ opts.quick = true;
107
+ else if (a === '--keep')
108
+ opts.keep = true;
109
+ else if (a === '--version')
110
+ opts.registryVersion = args[++i];
111
+ else if (a === '--staging')
112
+ opts.stagingDir = args[++i];
113
+ else if (a === '--transcripts')
114
+ opts.transcripts = args[++i];
115
+ else if (a.startsWith('-'))
116
+ throw new Error(`unknown option: ${a}`);
117
+ else if (!opts.location)
118
+ opts.location = a;
119
+ else
120
+ throw new Error(`unexpected argument: ${a}`);
121
+ i++;
122
+ }
123
+ if (!opts.location)
124
+ throw new Error('test:npm requires a story <location>');
125
+ return opts;
126
+ }
127
+ async function main(argv) {
128
+ const [command, ...rest] = argv;
129
+ if (!command || command === '--help' || command === '-h' || command === 'help') {
130
+ console.log(USAGE);
131
+ return command && command !== 'help' ? 1 : 0;
132
+ }
133
+ switch (command) {
134
+ case 'build': {
135
+ if ((0, repo_1.detectMode)() === 'monorepo') {
136
+ (0, build_1.runBuild)(parseBuild(rest));
137
+ return 0;
138
+ }
139
+ // Standalone: build the cwd project, or a registered story by name.
140
+ const positional = rest.find((a) => !a.startsWith('-'));
141
+ const flags = rest.filter((a) => a !== positional);
142
+ let dir;
143
+ if (positional) {
144
+ dir = (0, registry_1.lookupStory)(positional) ?? undefined; // throws if registered-but-stale
145
+ if (!dir) {
146
+ throw new Error(`'${positional}' is not a registered story — run \`sharpee register <location>\`, or run \`sharpee build\` from the project directory`);
147
+ }
148
+ }
149
+ if (flags.includes('--browser'))
150
+ await (0, build_browser_1.runBuildBrowserCommand)(flags.filter((a) => a !== '--browser'), dir);
151
+ else
152
+ await (0, build_2.runBuildCommand)(flags, dir);
153
+ return 0;
154
+ }
155
+ case 'build-browser': {
156
+ if ((0, repo_1.detectMode)() === 'monorepo')
157
+ (0, build_1.runBuild)({ ...parseBuild(rest), browser: true });
158
+ else
159
+ await (0, build_browser_1.runBuildBrowserCommand)(rest);
160
+ return 0;
161
+ }
162
+ case 'init':
163
+ await (0, init_1.runInitCommand)(rest);
164
+ return 0;
165
+ case 'init-browser':
166
+ await (0, init_browser_1.runInitBrowserCommand)(rest);
167
+ return 0;
168
+ case 'ifid':
169
+ (0, ifid_1.runIfidCommand)(rest);
170
+ return 0;
171
+ case 'bundle':
172
+ (0, bundle_1.runBundle)({});
173
+ return 0;
174
+ case 'clean':
175
+ (0, clean_1.runClean)({});
176
+ return 0;
177
+ case 'verify':
178
+ (0, verify_1.runVerify)({});
179
+ return 0;
180
+ case 'test:npm': {
181
+ const opts = parseTestNpm(rest);
182
+ // Resolve a registered story name → its path (so `test:npm <name>` works; ADR AC-3).
183
+ if (!(0, node_fs_1.existsSync)(opts.location))
184
+ opts.location = (0, registry_1.lookupStory)(opts.location) ?? opts.location;
185
+ const r = (0, test_npm_1.runTestNpm)(opts);
186
+ if (!r.ran)
187
+ return 0;
188
+ console.log('===========================================');
189
+ console.log(` RESULTS: ${r.passed} passing, ${r.failed} failures`);
190
+ console.log('===========================================');
191
+ if (r.failed > 0) {
192
+ console.log('Failures: ' + r.failures.join(', '));
193
+ return 1;
194
+ }
195
+ return 0;
196
+ }
197
+ case 'register':
198
+ (0, register_1.runRegister)(rest);
199
+ return 0;
200
+ case 'list':
201
+ (0, register_1.runList)();
202
+ return 0;
203
+ case 'test':
204
+ case 'play':
205
+ console.error(`sharpee ${command}: not yet implemented`);
206
+ return 2;
207
+ default:
208
+ console.error(`unknown command: ${command}\n`);
209
+ console.log(USAGE);
210
+ return 2;
211
+ }
212
+ }
213
+ main(process.argv.slice(2))
214
+ .then((code) => process.exit(code))
215
+ .catch((err) => {
216
+ console.error('sharpee: ' + (err instanceof Error ? err.message : String(err)));
217
+ process.exit(2);
218
+ });
219
+ //# sourceMappingURL=cli.js.map
package/cli.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/devkit/src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface BrowserBuildOptions {
2
+ quiet?: boolean;
3
+ }
4
+ /**
5
+ * Build the browser client for `story` into dist/web/<story>/. Assumes platform +
6
+ * story (incl. ESM where applicable) are already built.
7
+ * @throws if the story or its browser-entry.ts is missing, or game.js is empty after esbuild.
8
+ */
9
+ export declare function buildBrowserClient(root: string, story: string, opts?: BrowserBuildOptions): void;
10
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/devkit/src/commands/browser.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,GAAG,IAAI,CAgFpG"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildBrowserClient = buildBrowserClient;
4
+ /**
5
+ * browser.ts — `devkit build <story> --browser`: the self-contained single-player
6
+ * web app at dist/web/<story>/ (build.sh build_browser_client, 877-952).
7
+ *
8
+ * Owner context: @sharpee/devkit (ADR-180 Phase 3b). The author's player-facing
9
+ * deliverable (AC-9): an IIFE game.js + css + html that boots in one load, portable
10
+ * to any static host. Byte-for-byte parity with build.sh until the 3d cutover.
11
+ *
12
+ * Public interface: buildBrowserClient(root, story, opts) -> void.
13
+ */
14
+ const node_child_process_1 = require("node:child_process");
15
+ const node_fs_1 = require("node:fs");
16
+ const node_path_1 = require("node:path");
17
+ const repo_1 = require("../repo");
18
+ /** Copy a template file if present (build.sh's per-file `if [ -f ]` copies). */
19
+ function copyIfExists(src, dest) {
20
+ if (!(0, node_fs_1.existsSync)(src))
21
+ return false;
22
+ (0, node_fs_1.cpSync)(src, dest);
23
+ return true;
24
+ }
25
+ /**
26
+ * Build the browser client for `story` into dist/web/<story>/. Assumes platform +
27
+ * story (incl. ESM where applicable) are already built.
28
+ * @throws if the story or its browser-entry.ts is missing, or game.js is empty after esbuild.
29
+ */
30
+ function buildBrowserClient(root, story, opts = {}) {
31
+ const log = (m) => !opts.quiet && console.log(m);
32
+ const storyDir = (0, repo_1.resolveStoryDir)(root, story);
33
+ if (!storyDir)
34
+ throw new Error(`story not found: ${story}`);
35
+ const entry = (0, node_path_1.join)(storyDir, 'src', 'browser-entry.ts');
36
+ if (!(0, node_fs_1.existsSync)(entry))
37
+ throw new Error(`browser entry not found: ${entry}`);
38
+ const outRel = (0, node_path_1.join)('dist', 'web', story);
39
+ const outDir = (0, node_path_1.join)(root, outRel);
40
+ (0, node_fs_1.mkdirSync)(outDir, { recursive: true });
41
+ log(`=== Building Browser Client: ${story} ===`);
42
+ // Bundle — verbatim build.sh esbuild invocation (single platform-browser alias; the
43
+ // IIFE bakes the platform + story into one payload, so the page boots in a single load).
44
+ (0, node_child_process_1.execFileSync)('npx', [
45
+ 'esbuild',
46
+ (0, node_path_1.join)(storyDir, 'src', 'browser-entry.ts'),
47
+ '--bundle',
48
+ '--platform=browser',
49
+ '--target=es2020',
50
+ '--format=iife',
51
+ '--global-name=SharpeeGame',
52
+ `--outfile=${(0, node_path_1.join)(outRel, 'game.js')}`,
53
+ '--sourcemap',
54
+ '--minify',
55
+ '--conditions=require',
56
+ '--define:process.env.PARSER_DEBUG=undefined',
57
+ '--define:process.env.DEBUG_PRONOUNS=undefined',
58
+ '--define:process.env.NODE_ENV="production"',
59
+ `--alias:@sharpee/platform-browser=${(0, node_path_1.join)(root, 'packages', 'platform-browser', 'dist', 'index.js')}`,
60
+ ], { cwd: root, stdio: opts.quiet ? 'ignore' : 'inherit' });
61
+ const tpl = (0, node_path_1.join)(root, 'templates', 'browser');
62
+ // index.html (title set at runtime by BrowserClient from story config).
63
+ copyIfExists((0, node_path_1.join)(tpl, 'index.html'), (0, node_path_1.join)(outDir, 'index.html'));
64
+ // CSS: base (structural, ADR-170), decorations (prose vocabulary, ADR-174), infocom→styles (theme).
65
+ copyIfExists((0, node_path_1.join)(tpl, 'base.css'), (0, node_path_1.join)(outDir, 'base.css'));
66
+ copyIfExists((0, node_path_1.join)(tpl, 'decorations.css'), (0, node_path_1.join)(outDir, 'decorations.css'));
67
+ copyIfExists((0, node_path_1.join)(tpl, 'infocom.css'), (0, node_path_1.join)(outDir, 'styles.css'));
68
+ // Theme assets (per-theme bundled webfonts). rm -rf first to avoid cp-into-existing nesting.
69
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(tpl, 'themes'))) {
70
+ (0, node_fs_1.rmSync)((0, node_path_1.join)(outDir, 'themes'), { recursive: true, force: true });
71
+ (0, node_fs_1.cpSync)((0, node_path_1.join)(tpl, 'themes'), (0, node_path_1.join)(outDir, 'themes'), { recursive: true });
72
+ }
73
+ // Story assets (audio, images): copy the contents of <story>/assets/ into the output.
74
+ // Skip dotfiles to match build.sh's `cp "$ASSETS_DIR"/*` (bash glob excludes dotfiles,
75
+ // so .DS_Store and friends never reach the deliverable).
76
+ const assetsDir = (0, node_path_1.join)(storyDir, 'assets');
77
+ if ((0, node_fs_1.existsSync)(assetsDir)) {
78
+ for (const entryName of (0, node_fs_1.readdirSync)(assetsDir)) {
79
+ if (entryName.startsWith('.'))
80
+ continue;
81
+ (0, node_fs_1.cpSync)((0, node_path_1.join)(assetsDir, entryName), (0, node_path_1.join)(outDir, entryName), { recursive: true });
82
+ }
83
+ }
84
+ // Website mirror.
85
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(root, 'website', 'public'))) {
86
+ const webDir = (0, node_path_1.join)(root, 'website', 'public', 'web', story);
87
+ (0, node_fs_1.mkdirSync)(webDir, { recursive: true });
88
+ (0, node_fs_1.cpSync)((0, node_path_1.join)(outDir, 'game.js'), (0, node_path_1.join)(webDir, 'game.js'));
89
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(outDir, 'index.html')))
90
+ (0, node_fs_1.cpSync)((0, node_path_1.join)(outDir, 'index.html'), (0, node_path_1.join)(webDir, 'index.html'));
91
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(outDir, 'base.css')))
92
+ (0, node_fs_1.cpSync)((0, node_path_1.join)(outDir, 'base.css'), (0, node_path_1.join)(webDir, 'base.css'));
93
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(outDir, 'styles.css')))
94
+ (0, node_fs_1.cpSync)((0, node_path_1.join)(outDir, 'styles.css'), (0, node_path_1.join)(webDir, 'styles.css'));
95
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(outDir, 'themes'))) {
96
+ (0, node_fs_1.rmSync)((0, node_path_1.join)(webDir, 'themes'), { recursive: true, force: true });
97
+ (0, node_fs_1.cpSync)((0, node_path_1.join)(outDir, 'themes'), (0, node_path_1.join)(webDir, 'themes'), { recursive: true });
98
+ }
99
+ }
100
+ // Invariant: assert the deliverable exists (no silent success on an empty build).
101
+ const gameJs = (0, node_path_1.join)(outDir, 'game.js');
102
+ if (!(0, node_fs_1.existsSync)(gameJs) || (0, node_fs_1.statSync)(gameJs).size === 0) {
103
+ throw new Error(`browser build failed: ${(0, node_path_1.join)(outRel, 'game.js')} is missing or empty`);
104
+ }
105
+ log(`Output: ${outRel}/ (${(0, node_fs_1.statSync)(gameJs).size} bytes)`);
106
+ }
107
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/devkit/src/commands/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface BuildOptions {
2
+ root?: string;
3
+ /** Story name to build (resolved stories/<name> then tutorials/<name>). */
4
+ story?: string;
5
+ /** Resume the platform build from this package short-name (build.sh --skip). */
6
+ skipTo?: string;
7
+ /** Explicit version to stamp (else read packages/sharpee/package.json). */
8
+ version?: string;
9
+ /** Frozen build date (parity determinism). Defaults to now in build.sh's format. */
10
+ buildDate?: string;
11
+ /** Skip version stamping (build.sh --no-version). */
12
+ noVersion?: boolean;
13
+ /** Skip genai-api generation. */
14
+ noGenai?: boolean;
15
+ /** Run the ESM build pass (needed for browser/story-bundle targets; false for the CLI bundle). */
16
+ esm?: boolean;
17
+ /** Run the bundle step at the end (default true — the full build.sh pipeline). */
18
+ bundle?: boolean;
19
+ /** Also build the browser client (dist/web/<story>/). Implies --esm; requires a story. */
20
+ browser?: boolean;
21
+ /** Also build the zifmia multi-user server (tools/zifmia/dist/). Implies --esm. */
22
+ zifmia?: boolean;
23
+ quiet?: boolean;
24
+ }
25
+ /**
26
+ * Stamp versions (build.sh update_versions, CLI/story scope). Returns the resolved
27
+ * SHARPEE_VERSION so callers can log it. See module-level Behavior Statement.
28
+ */
29
+ export declare function stampVersions(root: string, opts: BuildOptions): string;
30
+ /** Build all platform packages in dependency order (build.sh build_platform). */
31
+ export declare function buildPlatform(root: string, opts: BuildOptions): void;
32
+ /** Generate the genai-api reference (build.sh generate_genai_api). */
33
+ export declare function generateGenaiApi(root: string, opts: BuildOptions): void;
34
+ /** Build a story package (build.sh build_story + resolve_story_pkg). */
35
+ export declare function buildStory(root: string, story: string, opts: BuildOptions): void;
36
+ /** Run the full build pipeline. */
37
+ export declare function runBuild(opts?: BuildOptions): void;
38
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/devkit/src/commands/build.ts"],"names":[],"mappings":"AA+BA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kGAAkG;IAClG,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAaD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAsCtE;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CA+BpE;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAKvE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAmBhF;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,IAAI,GAAE,YAAiB,GAAG,IAAI,CAkBtD"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stampVersions = stampVersions;
4
+ exports.buildPlatform = buildPlatform;
5
+ exports.generateGenaiApi = generateGenaiApi;
6
+ exports.buildStory = buildStory;
7
+ exports.runBuild = runBuild;
8
+ /**
9
+ * build.ts — `devkit build`: the full platform+story build pipeline (build.sh
10
+ * update_versions + build_platform + generate_genai_api + build_story + build_bundle).
11
+ * devkit orchestrates; tsf/pnpm compile.
12
+ *
13
+ * Owner context: @sharpee/devkit (ADR-180 Phase 3). Output must match build.sh
14
+ * byte-for-byte (frozen version+date) until build.sh is retired at cutover.
15
+ *
16
+ * Public interface: runBuild(opts). Sub-steps stampVersions/buildPlatform/
17
+ * generateGenaiApi/buildStory are exported for the parity harness + tests.
18
+ */
19
+ const node_child_process_1 = require("node:child_process");
20
+ const node_fs_1 = require("node:fs");
21
+ const node_path_1 = require("node:path");
22
+ const repo_1 = require("../repo");
23
+ const bundle_1 = require("./bundle");
24
+ const browser_1 = require("./browser");
25
+ const zifmia_1 = require("./zifmia");
26
+ /**
27
+ * The generator name written into stamped version.ts files. build.sh was retired at
28
+ * the ADR-180 Phase 3d cutover (parity verified byte-identical first), so devkit now
29
+ * names itself as the generator.
30
+ */
31
+ const GENERATOR = 'devkit';
32
+ function nowStamp() {
33
+ return new Date().toISOString().replace(/\.\d{3}Z$/, 'Z');
34
+ }
35
+ /** Rewrite a package.json's version, preserving key order + 2-space indent + trailing newline. */
36
+ function writePkgVersion(pkgPath, version) {
37
+ const pkg = JSON.parse((0, node_fs_1.readFileSync)(pkgPath, 'utf8'));
38
+ pkg.version = version;
39
+ (0, node_fs_1.writeFileSync)(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
40
+ }
41
+ /**
42
+ * Stamp versions (build.sh update_versions, CLI/story scope). Returns the resolved
43
+ * SHARPEE_VERSION so callers can log it. See module-level Behavior Statement.
44
+ */
45
+ function stampVersions(root, opts) {
46
+ const sharpeePkg = (0, node_path_1.join)(root, 'packages', 'sharpee', 'package.json');
47
+ const sharpeeVersion = opts.version ?? JSON.parse((0, node_fs_1.readFileSync)(sharpeePkg, 'utf8')).version;
48
+ if (opts.noVersion)
49
+ return sharpeeVersion;
50
+ const buildDate = opts.buildDate ?? nowStamp();
51
+ if ((0, node_fs_1.existsSync)(sharpeePkg))
52
+ writePkgVersion(sharpeePkg, sharpeeVersion);
53
+ // Story version.ts — stories/<name> only (build.sh quirk: tutorials are not stamped).
54
+ // Accepts a path or a name (resolveStory), so `./sharpee build stories/dungeo` stamps too.
55
+ if (opts.story) {
56
+ const resolved = (0, repo_1.resolveStory)(root, opts.story);
57
+ if (resolved && resolved.underStories) {
58
+ const storyVer = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(resolved.dir, 'package.json'), 'utf8')).version;
59
+ const versionFile = (0, node_path_1.join)(resolved.dir, 'src', 'version.ts');
60
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(versionFile), { recursive: true });
61
+ (0, node_fs_1.writeFileSync)(versionFile, `/**
62
+ * Version information for ${resolved.name}
63
+ * Auto-generated by ${GENERATOR} - DO NOT EDIT
64
+ */
65
+ export const STORY_VERSION = '${storyVer}';
66
+ export const BUILD_DATE = '${buildDate}';
67
+ export const ENGINE_VERSION = '${sharpeeVersion}';
68
+ export const VERSION_INFO = { version: STORY_VERSION, buildDate: BUILD_DATE, engineVersion: ENGINE_VERSION } as const;
69
+ `);
70
+ }
71
+ }
72
+ // zifmia package.json version (build.sh update_versions stamps it for -c zifmia).
73
+ if (opts.zifmia) {
74
+ const zifmiaPkg = (0, node_path_1.join)(root, 'tools', 'zifmia', 'package.json');
75
+ if ((0, node_fs_1.existsSync)(zifmiaPkg))
76
+ writePkgVersion(zifmiaPkg, sharpeeVersion);
77
+ }
78
+ return sharpeeVersion;
79
+ }
80
+ /** Build all platform packages in dependency order (build.sh build_platform). */
81
+ function buildPlatform(root, opts) {
82
+ const run = (pkg, args) => (0, node_child_process_1.execFileSync)(pkg, args, { cwd: root, stdio: opts.quiet ? 'ignore' : 'inherit' });
83
+ let skipping = Boolean(opts.skipTo);
84
+ for (const [pkg, dir] of repo_1.PLATFORM_PACKAGES) {
85
+ if (skipping) {
86
+ if (dir === opts.skipTo)
87
+ skipping = false;
88
+ else
89
+ continue;
90
+ }
91
+ run('pnpm', ['--filter', pkg, 'build']);
92
+ // Invariant: assert the compile produced output (precludes the .tsbuildinfo silent no-op class).
93
+ const distIndex = (0, node_path_1.join)(root, 'packages', dir, 'dist', 'index.js');
94
+ if (!(0, node_fs_1.existsSync)(distIndex)) {
95
+ throw new Error(`build of ${pkg} produced no dist/index.js (silent no-op?) at ${distIndex}`);
96
+ }
97
+ }
98
+ if (opts.esm) {
99
+ let esmSkip = Boolean(opts.skipTo);
100
+ for (const [pkg, dir] of repo_1.PLATFORM_PACKAGES) {
101
+ if (esmSkip) {
102
+ if (dir === opts.skipTo)
103
+ esmSkip = false;
104
+ else
105
+ continue;
106
+ }
107
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(root, 'packages', dir, 'tsconfig.esm.json'))) {
108
+ // tsf drives the esm target so esmExtensions post-processing runs (build.sh comment 555-557).
109
+ run((0, repo_1.tsfBin)(root), ['build', '--condition', 'esm', '--filter', pkg]);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ /** Generate the genai-api reference (build.sh generate_genai_api). */
115
+ function generateGenaiApi(root, opts) {
116
+ (0, node_child_process_1.execFileSync)('node', ['scripts/generate-genai-api.js'], {
117
+ cwd: root,
118
+ stdio: opts.quiet ? 'ignore' : 'inherit',
119
+ });
120
+ }
121
+ /** Build a story package (build.sh build_story + resolve_story_pkg). */
122
+ function buildStory(root, story, opts) {
123
+ const resolved = (0, repo_1.resolveStory)(root, story);
124
+ if (!resolved)
125
+ throw new Error(`story not found: ${story} (a path, or a stories/|tutorials/ name)`);
126
+ if (!resolved.inRepo || !resolved.pkg) {
127
+ // Standalone / out-of-repo stories build via their own toolchain — ADR-180 Phase U2.
128
+ throw new Error(`'${story}' is not an in-repo story (stories/ or tutorials/); standalone builds land in ADR-180 Phase U2`);
129
+ }
130
+ (0, node_child_process_1.execFileSync)('pnpm', ['--filter', resolved.pkg, 'build'], {
131
+ cwd: root,
132
+ stdio: opts.quiet ? 'ignore' : 'inherit',
133
+ });
134
+ if (opts.esm && (0, node_fs_1.existsSync)((0, node_path_1.join)(resolved.dir, 'tsconfig.esm.json'))) {
135
+ (0, node_child_process_1.execFileSync)((0, repo_1.tsfBin)(root), ['build', '--condition', 'esm', '--filter', resolved.pkg], {
136
+ cwd: root,
137
+ stdio: opts.quiet ? 'ignore' : 'inherit',
138
+ });
139
+ }
140
+ }
141
+ /** Run the full build pipeline. */
142
+ function runBuild(opts = {}) {
143
+ const root = opts.root ?? (0, repo_1.findRepoRoot)();
144
+ const log = (m) => !opts.quiet && console.log(m);
145
+ // Client targets (browser/zifmia) need the ESM build pass (build.sh runs it when a client is requested).
146
+ const effective = opts.browser || opts.zifmia ? { ...opts, esm: true } : opts;
147
+ if (effective.browser && !effective.story)
148
+ throw new Error('--browser requires a story');
149
+ log('=== devkit build ===');
150
+ const version = stampVersions(root, effective);
151
+ log(`version: ${version}${effective.story ? ` · story: ${effective.story}` : ''}`);
152
+ buildPlatform(root, effective);
153
+ if (!effective.noGenai)
154
+ generateGenaiApi(root, effective);
155
+ if (effective.story)
156
+ buildStory(root, effective.story, effective);
157
+ if (effective.bundle !== false)
158
+ (0, bundle_1.runBundle)({ root, quiet: effective.quiet });
159
+ if (effective.browser)
160
+ (0, browser_1.buildBrowserClient)(root, effective.story, { quiet: effective.quiet });
161
+ if (effective.zifmia)
162
+ (0, zifmia_1.buildZifmiaServer)(root, { quiet: effective.quiet });
163
+ log('=== build complete ===');
164
+ }
165
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/devkit/src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface BundleOptions {
2
+ /** Monorepo root; defaults to the workspace above cwd. */
3
+ root?: string;
4
+ /** Suppress per-step logging. */
5
+ quiet?: boolean;
6
+ }
7
+ /** Assemble dist/cli/sharpee.js + sharpee.d.ts. Assumes platform packages are built. */
8
+ export declare function runBundle(opts?: BundleOptions): void;
9
+ //# sourceMappingURL=bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/devkit/src/commands/bundle.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wFAAwF;AACxF,wBAAgB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,IAAI,CA8BxD"}