@your-world/cli 0.1.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 (83) hide show
  1. package/README.md +52 -0
  2. package/dist/adapters/codex-adapter.d.ts +15 -0
  3. package/dist/adapters/codex-adapter.js +70 -0
  4. package/dist/adapters/codex-adapter.js.map +1 -0
  5. package/dist/adapters/external-agent-adapter.d.ts +33 -0
  6. package/dist/adapters/external-agent-adapter.js +3 -0
  7. package/dist/adapters/external-agent-adapter.js.map +1 -0
  8. package/dist/adapters/generic-command-adapter.d.ts +12 -0
  9. package/dist/adapters/generic-command-adapter.js +57 -0
  10. package/dist/adapters/generic-command-adapter.js.map +1 -0
  11. package/dist/cli/action-submit.d.ts +19 -0
  12. package/dist/cli/action-submit.js +169 -0
  13. package/dist/cli/action-submit.js.map +1 -0
  14. package/dist/cli/bin.d.ts +2 -0
  15. package/dist/cli/bin.js +267 -0
  16. package/dist/cli/bin.js.map +1 -0
  17. package/dist/cli/catalog.d.ts +2 -0
  18. package/dist/cli/catalog.js +30 -0
  19. package/dist/cli/catalog.js.map +1 -0
  20. package/dist/cli/events.d.ts +2 -0
  21. package/dist/cli/events.js +22 -0
  22. package/dist/cli/events.js.map +1 -0
  23. package/dist/cli/observe.d.ts +2 -0
  24. package/dist/cli/observe.js +21 -0
  25. package/dist/cli/observe.js.map +1 -0
  26. package/dist/cli/play-init.d.ts +9 -0
  27. package/dist/cli/play-init.js +111 -0
  28. package/dist/cli/play-init.js.map +1 -0
  29. package/dist/cli/play-run.d.ts +2 -0
  30. package/dist/cli/play-run.js +28 -0
  31. package/dist/cli/play-run.js.map +1 -0
  32. package/dist/cli/play-status.d.ts +2 -0
  33. package/dist/cli/play-status.js +19 -0
  34. package/dist/cli/play-status.js.map +1 -0
  35. package/dist/cli/player-init.d.ts +9 -0
  36. package/dist/cli/player-init.js +38 -0
  37. package/dist/cli/player-init.js.map +1 -0
  38. package/dist/cli/rules.d.ts +2 -0
  39. package/dist/cli/rules.js +32 -0
  40. package/dist/cli/rules.js.map +1 -0
  41. package/dist/cli/shared.d.ts +27 -0
  42. package/dist/cli/shared.js +243 -0
  43. package/dist/cli/shared.js.map +1 -0
  44. package/dist/config/credential-store.d.ts +28 -0
  45. package/dist/config/credential-store.js +119 -0
  46. package/dist/config/credential-store.js.map +1 -0
  47. package/dist/index.d.ts +13 -0
  48. package/dist/index.js +30 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/logger.d.ts +12 -0
  51. package/dist/logger.js +40 -0
  52. package/dist/logger.js.map +1 -0
  53. package/dist/prompting/agents-template.d.ts +6 -0
  54. package/dist/prompting/agents-template.js +60 -0
  55. package/dist/prompting/agents-template.js.map +1 -0
  56. package/dist/prompting/turn-summary.d.ts +2 -0
  57. package/dist/prompting/turn-summary.js +27 -0
  58. package/dist/prompting/turn-summary.js.map +1 -0
  59. package/dist/runtime/player-runtime.d.ts +34 -0
  60. package/dist/runtime/player-runtime.js +228 -0
  61. package/dist/runtime/player-runtime.js.map +1 -0
  62. package/dist/runtime/runtime-types.d.ts +71 -0
  63. package/dist/runtime/runtime-types.js +3 -0
  64. package/dist/runtime/runtime-types.js.map +1 -0
  65. package/dist/runtime/session-store.d.ts +37 -0
  66. package/dist/runtime/session-store.js +139 -0
  67. package/dist/runtime/session-store.js.map +1 -0
  68. package/dist/runtime/settlement-sync.d.ts +9 -0
  69. package/dist/runtime/settlement-sync.js +80 -0
  70. package/dist/runtime/settlement-sync.js.map +1 -0
  71. package/dist/runtime/turn-orchestrator.d.ts +10 -0
  72. package/dist/runtime/turn-orchestrator.js +43 -0
  73. package/dist/runtime/turn-orchestrator.js.map +1 -0
  74. package/dist/runtime/workspace-manager.d.ts +9 -0
  75. package/dist/runtime/workspace-manager.js +28 -0
  76. package/dist/runtime/workspace-manager.js.map +1 -0
  77. package/dist/types.d.ts +273 -0
  78. package/dist/types.js +3 -0
  79. package/dist/types.js.map +1 -0
  80. package/dist/world-client.d.ts +31 -0
  81. package/dist/world-client.js +227 -0
  82. package/dist/world-client.js.map +1 -0
  83. package/package.json +46 -0
@@ -0,0 +1,267 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const action_submit_1 = require("./action-submit");
6
+ const catalog_1 = require("./catalog");
7
+ const events_1 = require("./events");
8
+ const observe_1 = require("./observe");
9
+ const play_init_1 = require("./play-init");
10
+ const play_run_1 = require("./play-run");
11
+ const play_status_1 = require("./play-status");
12
+ const player_init_1 = require("./player-init");
13
+ const rules_1 = require("./rules");
14
+ const shared_1 = require("./shared");
15
+ async function main() {
16
+ const program = createProgram();
17
+ if (process.argv.length <= 2) {
18
+ program.outputHelp();
19
+ return;
20
+ }
21
+ try {
22
+ await program.parseAsync(process.argv);
23
+ }
24
+ catch (error) {
25
+ if (error instanceof commander_1.CommanderError) {
26
+ if (error.code !== 'commander.helpDisplayed') {
27
+ process.exitCode = error.exitCode;
28
+ }
29
+ return;
30
+ }
31
+ if (error instanceof shared_1.CliError) {
32
+ process.stderr.write(`[${error.code}] ${error.message}\n`);
33
+ process.exitCode = error.exitCode;
34
+ return;
35
+ }
36
+ process.stderr.write(`${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`);
37
+ process.exitCode = 1;
38
+ }
39
+ }
40
+ function createProgram() {
41
+ const program = new commander_1.Command()
42
+ .name('yw')
43
+ .description('Your World player-owned agent CLI.')
44
+ .addHelpText('after', [
45
+ '',
46
+ 'Common commands:',
47
+ ' yw player init --player-name <name> [--profile <name>] [--server <url>]',
48
+ ' yw play init --agent-name <id> --adapter codex [--profile <name>] [--server <url>]',
49
+ ' yw play run [--work-dir <dir>] [--poll-ms <ms>] [--once]',
50
+ ' yw observe [--work-dir <dir>] [--as-of-tick <tick>]',
51
+ ' yw action submit --run-id <runId> (--json <json> | --file <file> | --verb <verb>)',
52
+ ' yw action status [--work-dir <dir>] [--run-id <runId>]',
53
+ '',
54
+ 'Run these commands from your player root directory.',
55
+ 'Default agent workspace: ./<agent-name>',
56
+ '',
57
+ `Default server: ${shared_1.DEFAULT_SERVER_URL}`,
58
+ ].join('\n'))
59
+ .showHelpAfterError()
60
+ .showSuggestionAfterError()
61
+ .exitOverride();
62
+ program
63
+ .command('player')
64
+ .description('Manage player profiles.')
65
+ .command('init')
66
+ .description('Create a local player profile.')
67
+ .requiredOption('--player-name <name>', 'Player name to register.')
68
+ .option('--profile <name>', 'Local profile name.')
69
+ .option('--server <url>', `World server URL. Defaults to ${shared_1.DEFAULT_SERVER_URL}.`)
70
+ .action(async (options) => {
71
+ await (0, player_init_1.runPlayerInit)(createParsedArgs([], {
72
+ 'player-name': options.playerName,
73
+ profile: options.profile,
74
+ server: options.server,
75
+ }));
76
+ });
77
+ const playCommand = program.command('play').description('Manage local play sessions.');
78
+ playCommand
79
+ .command('init')
80
+ .description('Create a local agent workspace.')
81
+ .option('--server <url>', `World server URL. Defaults to ${shared_1.DEFAULT_SERVER_URL}.`)
82
+ .option('--profile <name>', 'Local profile name. Defaults to the first saved player profile.')
83
+ .requiredOption('--agent-name <id>', 'Agent name to register.')
84
+ .addOption(new commander_1.Option('--adapter <name>', 'External agent adapter.').choices(['codex', 'generic-command']))
85
+ .option('--goal <text>', 'Long-running goal for the agent.')
86
+ .option('--poll-ms <ms>', 'Tick polling interval in milliseconds.')
87
+ .option('--work-dir <dir>', 'Agent workspace directory. Defaults to ./<agent-name>.')
88
+ .option('--command <value>', 'Adapter command segment.', collectValues, [])
89
+ .action(async (options) => {
90
+ await (0, play_init_1.runPlayInit)(createParsedArgs([], {
91
+ server: options.server,
92
+ profile: options.profile,
93
+ 'agent-name': options.agentName,
94
+ adapter: options.adapter,
95
+ goal: options.goal,
96
+ 'poll-ms': options.pollMs,
97
+ 'work-dir': options.workDir,
98
+ command: options.command,
99
+ }));
100
+ });
101
+ playCommand
102
+ .command('run')
103
+ .description('Run the local player orchestrator.')
104
+ .option('--work-dir <dir>', 'Workspace directory.')
105
+ .option('--poll-ms <ms>', 'Override tick polling interval in milliseconds.')
106
+ .option('--once', 'Process a single tick and exit.')
107
+ .action(async (options) => {
108
+ await (0, play_run_1.runPlayRun)(createParsedArgs([], {
109
+ 'work-dir': options.workDir,
110
+ 'poll-ms': options.pollMs,
111
+ once: options.once,
112
+ }));
113
+ });
114
+ playCommand
115
+ .command('status')
116
+ .description('Show the local play session status.')
117
+ .option('--work-dir <dir>', 'Workspace directory.')
118
+ .action(async (options) => {
119
+ await (0, play_status_1.runPlayStatus)(createParsedArgs([], {
120
+ 'work-dir': options.workDir,
121
+ }));
122
+ });
123
+ program
124
+ .command('observe')
125
+ .description('Fetch the current world observation.')
126
+ .option('--work-dir <dir>', 'Workspace directory.')
127
+ .option('--as-of-tick <tick>', 'Observe a specific tick snapshot.')
128
+ .action(async (options) => {
129
+ await (0, observe_1.runObserve)(createParsedArgs([], {
130
+ 'work-dir': options.workDir,
131
+ 'as-of-tick': options.asOfTick,
132
+ }));
133
+ });
134
+ program
135
+ .command('events')
136
+ .description('Fetch recent world events.')
137
+ .option('--work-dir <dir>', 'Workspace directory.')
138
+ .option('--after-tick <tick>', 'Only include events after this tick.')
139
+ .option('--limit <n>', 'Maximum number of events to return.')
140
+ .action(async (options) => {
141
+ await (0, events_1.runEvents)(createParsedArgs([], {
142
+ 'work-dir': options.workDir,
143
+ 'after-tick': options.afterTick,
144
+ limit: options.limit,
145
+ }));
146
+ });
147
+ const catalogCommand = program.command('catalog').description('Read catalog data.');
148
+ catalogCommand
149
+ .command('get')
150
+ .description('Get a catalog entry by kind and id.')
151
+ .requiredOption('--kind <kind>', 'Catalog kind.')
152
+ .requiredOption('--id <id>', 'Catalog entry id.')
153
+ .option('--work-dir <dir>', 'Workspace directory.')
154
+ .action(async (options) => {
155
+ await (0, catalog_1.runCatalog)(createParsedArgs(['get'], {
156
+ kind: options.kind,
157
+ id: options.id,
158
+ 'work-dir': options.workDir,
159
+ }));
160
+ });
161
+ catalogCommand
162
+ .command('search')
163
+ .description('Search catalog data.')
164
+ .requiredOption('--query <query>', 'Catalog search query.')
165
+ .option('--work-dir <dir>', 'Workspace directory.')
166
+ .action(async (options) => {
167
+ await (0, catalog_1.runCatalog)(createParsedArgs(['search'], {
168
+ query: options.query,
169
+ 'work-dir': options.workDir,
170
+ }));
171
+ });
172
+ const rulesCommand = program.command('rules').description('Read rule documentation.');
173
+ rulesCommand
174
+ .command('verb <verb>')
175
+ .description('Get verb rule details.')
176
+ .option('--work-dir <dir>', 'Workspace directory.')
177
+ .action(async (verb, options) => {
178
+ await (0, rules_1.runRules)(createParsedArgs(['verb', verb], {
179
+ 'work-dir': options.workDir,
180
+ }));
181
+ });
182
+ rulesCommand
183
+ .command('error <code>')
184
+ .description('Get error code documentation.')
185
+ .option('--work-dir <dir>', 'Workspace directory.')
186
+ .action(async (code, options) => {
187
+ await (0, rules_1.runRules)(createParsedArgs(['error', code], {
188
+ 'work-dir': options.workDir,
189
+ }));
190
+ });
191
+ const actionCommand = program.command('action').description('Manage agent actions.');
192
+ actionCommand
193
+ .command('submit')
194
+ .description('Submit an action for the active run.')
195
+ .requiredOption('--run-id <id>', 'Active run id.')
196
+ .option('--work-dir <dir>', 'Workspace directory.')
197
+ .option('--json <json>', 'Action JSON payload.')
198
+ .option('--file <file>', 'Path to a JSON action file.')
199
+ .option('--verb <verb>', 'Action verb.')
200
+ .option('--target-json <json>', 'JSON target payload.')
201
+ .option('--params-json <json>', 'JSON params payload.')
202
+ .option('--reason <text>', 'Human-readable reasoning.')
203
+ .action(async (options) => {
204
+ await (0, action_submit_1.runAction)(createParsedArgs(['submit'], {
205
+ 'run-id': options.runId,
206
+ 'work-dir': options.workDir,
207
+ json: options.json,
208
+ file: options.file,
209
+ verb: options.verb,
210
+ 'target-json': options.targetJson,
211
+ 'params-json': options.paramsJson,
212
+ reason: options.reason,
213
+ }));
214
+ });
215
+ actionCommand
216
+ .command('status')
217
+ .description('Show action submission state.')
218
+ .option('--work-dir <dir>', 'Workspace directory.')
219
+ .option('--run-id <id>', 'Run id to inspect.')
220
+ .action(async (options) => {
221
+ await (0, action_submit_1.runAction)(createParsedArgs(['status'], {
222
+ 'work-dir': options.workDir,
223
+ 'run-id': options.runId,
224
+ }));
225
+ });
226
+ actionCommand
227
+ .command('last')
228
+ .description('Show the last submitted action.')
229
+ .option('--work-dir <dir>', 'Workspace directory.')
230
+ .action(async (options) => {
231
+ await (0, action_submit_1.runAction)(createParsedArgs(['last'], {
232
+ 'work-dir': options.workDir,
233
+ }));
234
+ });
235
+ return program;
236
+ }
237
+ function createParsedArgs(positionals, options) {
238
+ const parsedOptions = new Map();
239
+ for (const [name, value] of Object.entries(options)) {
240
+ if (value === undefined) {
241
+ continue;
242
+ }
243
+ if (typeof value === 'boolean') {
244
+ if (value) {
245
+ parsedOptions.set(name, ['true']);
246
+ }
247
+ continue;
248
+ }
249
+ if (Array.isArray(value)) {
250
+ const values = value.filter((entry) => entry !== undefined && entry !== null).map((entry) => String(entry));
251
+ if (values.length > 0) {
252
+ parsedOptions.set(name, values);
253
+ }
254
+ continue;
255
+ }
256
+ parsedOptions.set(name, [String(value)]);
257
+ }
258
+ return {
259
+ positionals,
260
+ options: parsedOptions,
261
+ };
262
+ }
263
+ function collectValues(value, previous) {
264
+ return [...previous, value];
265
+ }
266
+ void main();
267
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":";;;AAEA,yCAA4D;AAE5D,mDAA4C;AAC5C,uCAAuC;AACvC,qCAAqC;AACrC,uCAAuC;AACvC,2CAA0C;AAC1C,yCAAwC;AACxC,+CAA8C;AAC9C,+CAA8C;AAC9C,mCAAmC;AACnC,qCAAoE;AAEpE,KAAK,UAAU,IAAI;IACf,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,0BAAc,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;gBAC3C,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YACtC,CAAC;YACD,OAAO;QACX,CAAC;QAED,IAAI,KAAK,YAAY,iBAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAClC,OAAO;QACX,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAED,SAAS,aAAa;IAClB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE;SACxB,IAAI,CAAC,IAAI,CAAC;SACV,WAAW,CAAC,oCAAoC,CAAC;SACjD,WAAW,CACR,OAAO,EACP;QACI,EAAE;QACF,kBAAkB;QAClB,2EAA2E;QAC3E,sFAAsF;QACtF,4DAA4D;QAC5D,uDAAuD;QACvD,qFAAqF;QACrF,0DAA0D;QAC1D,EAAE;QACF,qDAAqD;QACrD,yCAAyC;QACzC,EAAE;QACF,mBAAmB,2BAAkB,EAAE;KAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CACf;SACA,kBAAkB,EAAE;SACpB,wBAAwB,EAAE;SAC1B,YAAY,EAAE,CAAC;IAEpB,OAAO;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yBAAyB,CAAC;SACtC,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gCAAgC,CAAC;SAC7C,cAAc,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;SAClE,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;SACjD,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,2BAAkB,GAAG,CAAC;SAChF,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QACzC,MAAM,IAAA,2BAAa,EACf,gBAAgB,CAAC,EAAE,EAAE;YACjB,aAAa,EAAE,OAAO,CAAC,UAAU;YACjC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IACvF,WAAW;SACN,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,2BAAkB,GAAG,CAAC;SAChF,MAAM,CAAC,kBAAkB,EAAE,iEAAiE,CAAC;SAC7F,cAAc,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;SAC9D,SAAS,CAAC,IAAI,kBAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;SAC1G,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC;SAC3D,MAAM,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;SAClE,MAAM,CAAC,kBAAkB,EAAE,wDAAwD,CAAC;SACpF,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,aAAa,EAAE,EAAE,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,OAAwB,EAAE,EAAE;QACvC,MAAM,IAAA,uBAAW,EACb,gBAAgB,CAAC,EAAE,EAAE;YACjB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,SAAS;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,UAAU,EAAE,OAAO,CAAC,OAAO;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,WAAW;SACN,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,CAAC;SAC3E,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;QAC/C,MAAM,IAAA,qBAAU,EACZ,gBAAgB,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,OAAO,CAAC,OAAO;YAC3B,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,WAAW;SACN,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;QAC/C,MAAM,IAAA,2BAAa,EACf,gBAAgB,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,OAAO,CAAC,OAAO;SAC9B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,OAAO;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACtC,MAAM,IAAA,oBAAU,EACZ,gBAAgB,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,OAAO,CAAC,OAAO;YAC3B,YAAY,EAAE,OAAO,CAAC,QAAQ;SACjC,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,OAAO;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SACrE,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;QACrC,MAAM,IAAA,kBAAS,EACX,gBAAgB,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,OAAO,CAAC,OAAO;YAC3B,YAAY,EAAE,OAAO,CAAC,SAAS;YAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;SACvB,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACpF,cAAc;SACT,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,qCAAqC,CAAC;SAClD,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC;SAChD,cAAc,CAAC,WAAW,EAAE,mBAAmB,CAAC;SAChD,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QACzC,MAAM,IAAA,oBAAU,EACZ,gBAAgB,CAAC,CAAC,KAAK,CAAC,EAAE;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,OAAO,CAAC,OAAO;SAC9B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,cAAc;SACT,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sBAAsB,CAAC;SACnC,cAAc,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;SAC1D,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,OAA6B,EAAE,EAAE;QAC5C,MAAM,IAAA,oBAAU,EACZ,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EAAE;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,OAAO;SAC9B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IACtF,YAAY;SACP,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAgC,EAAE,EAAE;QAC7D,MAAM,IAAA,gBAAQ,EACV,gBAAgB,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YAC7B,UAAU,EAAE,OAAO,CAAC,OAAO;SAC9B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,YAAY;SACP,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAgC,EAAE,EAAE;QAC7D,MAAM,IAAA,gBAAQ,EACV,gBAAgB,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YAC9B,UAAU,EAAE,OAAO,CAAC,OAAO;SAC9B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IACrF,aAAa;SACR,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sCAAsC,CAAC;SACnD,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC;SACjD,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC;SACvC,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;QAC3C,MAAM,IAAA,yBAAS,EACX,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EAAE;YACzB,QAAQ,EAAE,OAAO,CAAC,KAAK;YACvB,UAAU,EAAE,OAAO,CAAC,OAAO;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,aAAa,EAAE,OAAO,CAAC,UAAU;YACjC,aAAa,EAAE,OAAO,CAAC,UAAU;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,aAAa;SACR,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,oBAAoB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;QAC3C,MAAM,IAAA,yBAAS,EACX,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EAAE;YACzB,UAAU,EAAE,OAAO,CAAC,OAAO;YAC3B,QAAQ,EAAE,OAAO,CAAC,KAAK;SAC1B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,aAAa;SACR,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;QAC/C,MAAM,IAAA,yBAAS,EACX,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE;YACvB,UAAU,EAAE,OAAO,CAAC,OAAO;SAC9B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAqB,EAAE,OAAgC;IAC7E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;IAElD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,KAAK,EAAE,CAAC;gBACR,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC;YACD,SAAS;QACb,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAsC,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChJ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;YACD,SAAS;QACb,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACH,WAAW;QACX,OAAO,EAAE,aAAa;KACzB,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,QAAkB;IACpD,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAyDD,KAAK,IAAI,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ParsedArgs } from './shared';
2
+ export declare function runCatalog(args: ParsedArgs): Promise<void>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runCatalog = runCatalog;
4
+ const session_store_1 = require("../runtime/session-store");
5
+ const shared_1 = require("./shared");
6
+ async function runCatalog(args) {
7
+ const subcommand = args.positionals[0];
8
+ const workDir = await (0, shared_1.resolveWorkDir)(args);
9
+ const store = new session_store_1.SessionStore(workDir);
10
+ const session = await store.requireSession();
11
+ const client = await (0, shared_1.createClientFromSession)(session);
12
+ if (subcommand === 'get') {
13
+ const kind = (0, shared_1.requireOption)(args, 'kind');
14
+ const id = (0, shared_1.requireOption)(args, 'id');
15
+ (0, shared_1.printJson)(await client.getCatalog({
16
+ kind,
17
+ id,
18
+ }));
19
+ return;
20
+ }
21
+ if (subcommand === 'search') {
22
+ const query = (0, shared_1.requireOption)(args, 'query');
23
+ (0, shared_1.printJson)(await client.getCatalog({
24
+ q: query,
25
+ }));
26
+ return;
27
+ }
28
+ throw new shared_1.CliError('INVALID_COMMAND', 'catalog requires "get" or "search".');
29
+ }
30
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/cli/catalog.ts"],"names":[],"mappings":";;AAGA,gCA8BC;AAjCD,4DAAwD;AACxD,qCAAmH;AAE5G,KAAK,UAAU,UAAU,CAAC,IAAgB;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAuB,EAAC,OAAO,CAAC,CAAC;IAEtD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAA,sBAAa,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,IAAA,kBAAS,EACL,MAAM,MAAM,CAAC,UAAU,CAAC;YACpB,IAAI;YACJ,EAAE;SACL,CAAC,CACL,CAAC;QACF,OAAO;IACX,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAA,sBAAa,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAA,kBAAS,EACL,MAAM,MAAM,CAAC,UAAU,CAAC;YACpB,CAAC,EAAE,KAAK;SACX,CAAC,CACL,CAAC;QACF,OAAO;IACX,CAAC;IAED,MAAM,IAAI,iBAAQ,CAAC,iBAAiB,EAAE,qCAAqC,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ParsedArgs } from './shared';
2
+ export declare function runEvents(args: ParsedArgs): Promise<void>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runEvents = runEvents;
4
+ const session_store_1 = require("../runtime/session-store");
5
+ const shared_1 = require("./shared");
6
+ async function runEvents(args) {
7
+ const workDir = await (0, shared_1.resolveWorkDir)(args);
8
+ const store = new session_store_1.SessionStore(workDir);
9
+ const session = await store.requireSession();
10
+ const client = await (0, shared_1.createClientFromSession)(session);
11
+ const afterTick = parseInteger((0, shared_1.getOption)(args, 'after-tick')) ?? -1;
12
+ const limit = parseInteger((0, shared_1.getOption)(args, 'limit')) ?? 50;
13
+ (0, shared_1.printJson)(await client.getEvents(afterTick, limit));
14
+ }
15
+ function parseInteger(raw) {
16
+ if (!raw) {
17
+ return undefined;
18
+ }
19
+ const value = Number(raw);
20
+ return Number.isFinite(value) ? Math.trunc(value) : undefined;
21
+ }
22
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/cli/events.ts"],"names":[],"mappings":";;AAGA,8BASC;AAZD,4DAAwD;AACxD,qCAAqG;AAE9F,KAAK,UAAU,SAAS,CAAC,IAAgB;IAC5C,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAuB,EAAC,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAA,kBAAS,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAA,kBAAS,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3D,IAAA,kBAAS,EAAC,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CAAC,GAAuB;IACzC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ParsedArgs } from './shared';
2
+ export declare function runObserve(args: ParsedArgs): Promise<void>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runObserve = runObserve;
4
+ const session_store_1 = require("../runtime/session-store");
5
+ const shared_1 = require("./shared");
6
+ async function runObserve(args) {
7
+ const workDir = await (0, shared_1.resolveWorkDir)(args);
8
+ const store = new session_store_1.SessionStore(workDir);
9
+ const session = await store.requireSession();
10
+ const client = await (0, shared_1.createClientFromSession)(session);
11
+ const asOfTick = parseOptionalInteger((0, shared_1.getOption)(args, 'as-of-tick'));
12
+ (0, shared_1.printJson)(await client.observe(asOfTick));
13
+ }
14
+ function parseOptionalInteger(raw) {
15
+ if (!raw) {
16
+ return undefined;
17
+ }
18
+ const value = Number(raw);
19
+ return Number.isFinite(value) ? Math.trunc(value) : undefined;
20
+ }
21
+ //# sourceMappingURL=observe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/cli/observe.ts"],"names":[],"mappings":";;AAGA,gCAQC;AAXD,4DAAwD;AACxD,qCAAqG;AAE9F,KAAK,UAAU,UAAU,CAAC,IAAgB;IAC7C,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAuB,EAAC,OAAO,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAA,kBAAS,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAErE,IAAA,kBAAS,EAAC,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAuB;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { CredentialStore } from '../config/credential-store';
2
+ import { PlayerAgentCreateResponse } from '../types';
3
+ import { ParsedArgs } from './shared';
4
+ interface RunPlayInitDependencies {
5
+ createCredentialStore?: () => CredentialStore;
6
+ createPlayerAgent?: (serverUrl: string, playerCredential: string, agentName: string) => Promise<PlayerAgentCreateResponse>;
7
+ }
8
+ export declare function runPlayInit(args: ParsedArgs, dependencies?: RunPlayInitDependencies): Promise<void>;
9
+ export {};
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runPlayInit = runPlayInit;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const credential_store_1 = require("../config/credential-store");
9
+ const session_store_1 = require("../runtime/session-store");
10
+ const workspace_manager_1 = require("../runtime/workspace-manager");
11
+ const world_client_1 = require("../world-client");
12
+ const shared_1 = require("./shared");
13
+ async function runPlayInit(args, dependencies = {}) {
14
+ const serverUrl = (0, shared_1.resolveServerUrl)(args);
15
+ const agentName = (0, shared_1.requireOption)(args, 'agent-name');
16
+ const adapter = (0, shared_1.requireOption)(args, 'adapter');
17
+ const goal = (0, shared_1.getOption)(args, 'goal') ?? 'survive and expand production';
18
+ const pollMs = parsePositiveInteger((0, shared_1.getOption)(args, 'poll-ms')) ?? 1000;
19
+ const credentialStore = dependencies.createCredentialStore?.() ?? new credential_store_1.CredentialStore();
20
+ const defaultCredential = await credentialStore.getDefaultPlayerCredential(serverUrl);
21
+ const profile = (0, shared_1.getOption)(args, 'profile') ?? defaultCredential?.profile;
22
+ if (!profile) {
23
+ throw new shared_1.CliError('MISSING_PLAYER_CREDENTIAL', 'Missing player credential. Run "yw player init" first.');
24
+ }
25
+ const explicitWorkDir = (0, shared_1.getOption)(args, 'work-dir');
26
+ const workDir = explicitWorkDir ? node_path_1.default.resolve(process.cwd(), explicitWorkDir) : node_path_1.default.resolve(process.cwd(), agentName);
27
+ const command = (0, shared_1.getOptionValues)(args, 'command');
28
+ const playerCredential = await credentialStore.getPlayerCredential(serverUrl, profile);
29
+ if (!playerCredential) {
30
+ throw new shared_1.CliError('MISSING_PLAYER_CREDENTIAL', `Missing player credential for profile ${profile}. Run "yw player init" first.`);
31
+ }
32
+ const bootstrapSession = {
33
+ profile,
34
+ playerId: playerCredential.playerId,
35
+ agentId: agentName,
36
+ serverUrl,
37
+ workDir,
38
+ adapter,
39
+ runState: 'idle',
40
+ latestObservedTick: -1,
41
+ pendingWake: false,
42
+ goal,
43
+ tickPollIntervalMs: pollMs,
44
+ adapterConfig: buildAdapterConfig(adapter, command),
45
+ };
46
+ (0, shared_1.createAdapter)(bootstrapSession);
47
+ let created;
48
+ try {
49
+ created =
50
+ (await dependencies.createPlayerAgent?.(serverUrl, playerCredential.playerCredential, agentName)) ??
51
+ (await new world_client_1.WorldClient({
52
+ baseUrl: serverUrl,
53
+ }).createPlayerAgent(playerCredential.playerCredential, {
54
+ agentName,
55
+ }));
56
+ }
57
+ catch (error) {
58
+ if (error instanceof world_client_1.WorldClientError && error.code === 'AGENT_EXISTS') {
59
+ throw new shared_1.CliError('AGENT_EXISTS', `Agent name "${agentName}" is already taken on this server. Choose a different --agent-name.`);
60
+ }
61
+ throw error;
62
+ }
63
+ const agentCredential = await credentialStore.saveAgentCredential({
64
+ serverUrl,
65
+ profile,
66
+ playerId: created.playerId,
67
+ agentId: created.agentId,
68
+ agentToken: created.agentToken,
69
+ });
70
+ const session = {
71
+ ...bootstrapSession,
72
+ playerId: created.playerId,
73
+ agentId: created.agentId,
74
+ credentialRef: agentCredential.credentialRef,
75
+ };
76
+ const store = new session_store_1.SessionStore(workDir);
77
+ await store.writeSession(session);
78
+ await new workspace_manager_1.WorkspaceManager(store).ensureWorkspace(session);
79
+ (0, shared_1.printJson)({
80
+ ok: true,
81
+ profile,
82
+ workDir,
83
+ playerId: created.playerId,
84
+ agentId: created.agentId,
85
+ credentialRef: agentCredential.credentialRef,
86
+ adapter,
87
+ });
88
+ }
89
+ function buildAdapterConfig(adapter, command) {
90
+ if (adapter === 'codex') {
91
+ return command.length > 0 ? { command } : undefined;
92
+ }
93
+ if (adapter === 'generic-command') {
94
+ if (command.length === 0) {
95
+ throw new shared_1.CliError('MISSING_OPTION', 'generic-command adapter requires at least one --command value.');
96
+ }
97
+ return { command };
98
+ }
99
+ throw new shared_1.CliError('UNKNOWN_ADAPTER', `Unsupported adapter: ${adapter}`);
100
+ }
101
+ function parsePositiveInteger(raw) {
102
+ if (!raw) {
103
+ return undefined;
104
+ }
105
+ const value = Number(raw);
106
+ if (!Number.isFinite(value) || value <= 0) {
107
+ throw new shared_1.CliError('INVALID_OPTION', `Expected positive integer, received: ${raw}`);
108
+ }
109
+ return Math.trunc(value);
110
+ }
111
+ //# sourceMappingURL=play-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play-init.js","sourceRoot":"","sources":["../../src/cli/play-init.ts"],"names":[],"mappings":";;;;;AAeA,kCAoFC;AAnGD,0DAA6B;AAE7B,iEAA6D;AAE7D,4DAAwD;AACxD,oEAAgE;AAEhE,kDAAgE;AAChE,qCAAuI;AAOhI,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,eAAwC,EAAE;IAC1F,MAAM,SAAS,GAAG,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAA,sBAAa,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAA,sBAAa,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAA,kBAAS,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,+BAA+B,CAAC;IACxE,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAA,kBAAS,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC;IAExE,MAAM,eAAe,GAAG,YAAY,CAAC,qBAAqB,EAAE,EAAE,IAAI,IAAI,kCAAe,EAAE,CAAC;IACxF,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,IAAA,kBAAS,EAAC,IAAI,EAAE,SAAS,CAAC,IAAI,iBAAiB,EAAE,OAAO,CAAC;IACzE,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,iBAAQ,CAAC,2BAA2B,EAAE,wDAAwD,CAAC,CAAC;IAC9G,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,kBAAS,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IACxH,MAAM,OAAO,GAAG,IAAA,wBAAe,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,MAAM,IAAI,iBAAQ,CAAC,2BAA2B,EAAE,yCAAyC,OAAO,+BAA+B,CAAC,CAAC;IACrI,CAAC;IAED,MAAM,gBAAgB,GAAyB;QAC3C,OAAO;QACP,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,OAAO,EAAE,SAAS;QAClB,SAAS;QACT,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,MAAM;QAChB,kBAAkB,EAAE,CAAC,CAAC;QACtB,WAAW,EAAE,KAAK;QAClB,IAAI;QACJ,kBAAkB,EAAE,MAAM;QAC1B,aAAa,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;KACtD,CAAC;IAEF,IAAA,sBAAa,EAAC,gBAAgB,CAAC,CAAC;IAEhC,IAAI,OAAkC,CAAC;IACvC,IAAI,CAAC;QACD,OAAO;YACH,CAAC,MAAM,YAAY,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBACjG,CAAC,MAAM,IAAI,0BAAW,CAAC;oBACnB,OAAO,EAAE,SAAS;iBACrB,CAAC,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE;oBACpD,SAAS;iBACZ,CAAC,CAAC,CAAC;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,+BAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACrE,MAAM,IAAI,iBAAQ,CAAC,cAAc,EAAE,eAAe,SAAS,qEAAqE,CAAC,CAAC;QACtI,CAAC;QAED,MAAM,KAAK,CAAC;IAChB,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,mBAAmB,CAAC;QAC9D,SAAS;QACT,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;KACjC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAyB;QAClC,GAAG,gBAAgB;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,eAAe,CAAC,aAAa;KAC/C,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,oCAAgB,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAE3D,IAAA,kBAAS,EAAC;QACN,EAAE,EAAE,IAAI;QACR,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,eAAe,CAAC,aAAa;QAC5C,OAAO;KACV,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe,EAAE,OAAiB;IAC1D,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,CAAC;IAED,IAAI,OAAO,KAAK,iBAAiB,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,iBAAQ,CAAC,gBAAgB,EAAE,gEAAgE,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,iBAAQ,CAAC,iBAAiB,EAAE,wBAAwB,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAuB;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,iBAAQ,CAAC,gBAAgB,EAAE,wCAAwC,GAAG,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ParsedArgs } from './shared';
2
+ export declare function runPlayRun(args: ParsedArgs): Promise<void>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runPlayRun = runPlayRun;
4
+ const player_runtime_1 = require("../runtime/player-runtime");
5
+ const session_store_1 = require("../runtime/session-store");
6
+ const shared_1 = require("./shared");
7
+ async function runPlayRun(args) {
8
+ const workDir = await (0, shared_1.resolveWorkDir)(args);
9
+ const store = new session_store_1.SessionStore(workDir);
10
+ const session = await store.requireSession();
11
+ const runtime = new player_runtime_1.PlayerRuntime({
12
+ client: await (0, shared_1.createClientFromSession)(session),
13
+ store,
14
+ adapter: (0, shared_1.createAdapter)(session),
15
+ logger: (0, shared_1.createLogger)(),
16
+ pollIntervalMs: session.tickPollIntervalMs,
17
+ ...((0, shared_1.hasFlag)(args, 'once') ? { maxTicks: 1 } : {}),
18
+ });
19
+ const controller = new AbortController();
20
+ process.once('SIGINT', () => controller.abort());
21
+ process.once('SIGTERM', () => controller.abort());
22
+ await runtime.start(controller.signal);
23
+ (0, shared_1.printJson)({
24
+ ok: true,
25
+ workDir,
26
+ });
27
+ }
28
+ //# sourceMappingURL=play-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play-run.js","sourceRoot":"","sources":["../../src/cli/play-run.ts"],"names":[],"mappings":";;AAIA,gCAsBC;AA1BD,8DAA0D;AAC1D,4DAAwD;AACxD,qCAAgI;AAEzH,KAAK,UAAU,UAAU,CAAC,IAAgB;IAC7C,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,8BAAa,CAAC;QAC9B,MAAM,EAAE,MAAM,IAAA,gCAAuB,EAAC,OAAO,CAAC;QAC9C,KAAK;QACL,OAAO,EAAE,IAAA,sBAAa,EAAC,OAAO,CAAC;QAC/B,MAAM,EAAE,IAAA,qBAAY,GAAE;QACtB,cAAc,EAAE,OAAO,CAAC,kBAAkB;QAC1C,GAAG,CAAC,IAAA,gBAAO,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAElD,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,IAAA,kBAAS,EAAC;QACN,EAAE,EAAE,IAAI;QACR,OAAO;KACV,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ParsedArgs } from './shared';
2
+ export declare function runPlayStatus(args: ParsedArgs): Promise<void>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runPlayStatus = runPlayStatus;
4
+ const session_store_1 = require("../runtime/session-store");
5
+ const shared_1 = require("./shared");
6
+ async function runPlayStatus(args) {
7
+ const workDir = await (0, shared_1.resolveWorkDir)(args);
8
+ const store = new session_store_1.SessionStore(workDir);
9
+ const session = await store.requireSession();
10
+ const client = await (0, shared_1.createClientFromSession)(session);
11
+ const [lastAction, lastSettlement, tickInfo] = await Promise.all([store.readLastAction(), store.readLastSettlement(), client.getTickInfo()]);
12
+ (0, shared_1.printJson)({
13
+ session,
14
+ tickInfo,
15
+ lastAction,
16
+ lastSettlement,
17
+ });
18
+ }
19
+ //# sourceMappingURL=play-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play-status.js","sourceRoot":"","sources":["../../src/cli/play-status.ts"],"names":[],"mappings":";;AAGA,sCAaC;AAhBD,4DAAwD;AACxD,qCAA0F;AAEnF,KAAK,UAAU,aAAa,CAAC,IAAgB;IAChD,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAuB,EAAC,OAAO,CAAC,CAAC;IACtD,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE7I,IAAA,kBAAS,EAAC;QACN,OAAO;QACP,QAAQ;QACR,UAAU;QACV,cAAc;KACjB,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { CredentialStore } from '../config/credential-store';
2
+ import { PlayerInitResponse } from '../types';
3
+ import { ParsedArgs } from './shared';
4
+ interface RunPlayerInitDependencies {
5
+ createCredentialStore?: () => CredentialStore;
6
+ initPlayer?: (serverUrl: string, playerName: string) => Promise<PlayerInitResponse>;
7
+ }
8
+ export declare function runPlayerInit(args: ParsedArgs, dependencies?: RunPlayerInitDependencies): Promise<void>;
9
+ export {};
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runPlayerInit = runPlayerInit;
4
+ const credential_store_1 = require("../config/credential-store");
5
+ const world_client_1 = require("../world-client");
6
+ const shared_1 = require("./shared");
7
+ async function runPlayerInit(args, dependencies = {}) {
8
+ const serverUrl = (0, shared_1.resolveServerUrl)(args);
9
+ const playerName = (0, shared_1.requireOption)(args, 'player-name');
10
+ const profile = (0, shared_1.getOption)(args, 'profile') ?? playerName;
11
+ const credentialStore = dependencies.createCredentialStore?.() ?? new credential_store_1.CredentialStore();
12
+ const existing = await credentialStore.getPlayerCredential(serverUrl, profile);
13
+ if (existing) {
14
+ throw new shared_1.CliError('PROFILE_EXISTS', `Profile ${profile} already exists for ${serverUrl}. Use a different --profile to create another player.`);
15
+ }
16
+ const response = (await dependencies.initPlayer?.(serverUrl, playerName)) ??
17
+ (await new world_client_1.WorldClient({
18
+ baseUrl: serverUrl,
19
+ }).playerInit({
20
+ playerName,
21
+ }));
22
+ await credentialStore.savePlayerCredential({
23
+ serverUrl,
24
+ profile,
25
+ playerId: response.playerId,
26
+ playerCredential: response.playerCredential,
27
+ });
28
+ (0, shared_1.printJson)({
29
+ ok: true,
30
+ profile,
31
+ serverUrl,
32
+ playerId: response.playerId,
33
+ });
34
+ if (process.stderr.isTTY) {
35
+ process.stderr.write(['', 'Next step:', ` yw play init --agent-name <agent-name> --adapter codex --goal "build your own home" [--profile ${profile}]`, ' Default agent workspace: ./<agent-name>', ''].join('\n'));
36
+ }
37
+ }
38
+ //# sourceMappingURL=player-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"player-init.js","sourceRoot":"","sources":["../../src/cli/player-init.ts"],"names":[],"mappings":";;AAUA,sCAkCC;AA5CD,iEAA6D;AAE7D,kDAA8C;AAC9C,qCAAuG;AAOhG,KAAK,UAAU,aAAa,CAAC,IAAgB,EAAE,eAA0C,EAAE;IAC9F,MAAM,SAAS,GAAG,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAA,kBAAS,EAAC,IAAI,EAAE,SAAS,CAAC,IAAI,UAAU,CAAC;IACzD,MAAM,eAAe,GAAG,YAAY,CAAC,qBAAqB,EAAE,EAAE,IAAI,IAAI,kCAAe,EAAE,CAAC;IACxF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/E,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,IAAI,iBAAQ,CAAC,gBAAgB,EAAE,WAAW,OAAO,uBAAuB,SAAS,uDAAuD,CAAC,CAAC;IACpJ,CAAC;IAED,MAAM,QAAQ,GACV,CAAC,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACxD,CAAC,MAAM,IAAI,0BAAW,CAAC;YACnB,OAAO,EAAE,SAAS;SACrB,CAAC,CAAC,UAAU,CAAC;YACV,UAAU;SACb,CAAC,CAAC,CAAC;IACR,MAAM,eAAe,CAAC,oBAAoB,CAAC;QACvC,SAAS;QACT,OAAO;QACP,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;KAC9C,CAAC,CAAC;IAEH,IAAA,kBAAS,EAAC;QACN,EAAE,EAAE,IAAI;QACR,OAAO;QACP,SAAS;QACT,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC9B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,oGAAoG,OAAO,GAAG,EAAE,2CAA2C,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzN,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ParsedArgs } from './shared';
2
+ export declare function runRules(args: ParsedArgs): Promise<void>;