create-invokable 0.2.0 → 0.3.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/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4C,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAkBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAwGxE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4C,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAkBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAkIxE"}
package/dist/cli.js CHANGED
@@ -95,18 +95,34 @@ export async function createMain(options) {
95
95
  stderr(`\nCreated ${target}\n\n`);
96
96
  for (const file of files)
97
97
  stderr(` ${file.path}\n`);
98
- stderr([
98
+ // Spelled out because `${name} login` is the first thing people try, and
99
+ // it is not a command until the package is linked. Getting
100
+ // "command not found" straight after a successful scaffold reads as the
101
+ // tool being broken.
102
+ const lines = [
99
103
  '',
100
104
  'Next:',
101
105
  ` cd ${name}`,
102
106
  ' npm install',
103
107
  ' npm run build',
108
+ '',
109
+ `Run it with the full path — \`${name}\` is not on your PATH yet:`,
104
110
  ` node bin/${name}.mjs --help`,
111
+ ` node bin/${name}.mjs doctor --json`,
105
112
  '',
106
- 'Then check the contract holds:',
107
- ` npx invokable-test node bin/${name}.mjs`,
113
+ `To type \`${name}\` instead, link it once:`,
114
+ ' npm link',
115
+ ` ${name} --help`,
108
116
  '',
109
- ].join('\n'));
117
+ ];
118
+ if (auth === 'self-host') {
119
+ lines.push('This project is self-hosted, so it ships its own server.', 'Start it in another terminal before you sign in:', ' npm run server', ` node bin/${name}.mjs login`, '');
120
+ }
121
+ else {
122
+ lines.push('Sign in (opens a browser):', ` node bin/${name}.mjs login`, '');
123
+ }
124
+ lines.push('Then check the contract holds:', ` npx invokable-test node bin/${name}.mjs`, '');
125
+ stderr(lines.join('\n'));
110
126
  return 0;
111
127
  }
112
128
  finally {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,MAAM,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAqMD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,EAAE,CAiG3D"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,MAAM,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA4XD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,EAAE,CA2G3D"}
package/dist/template.js CHANGED
@@ -1,3 +1,18 @@
1
+ import { readFileSync } from 'node:fs';
2
+ /**
3
+ * The `@invokable/*` range a scaffolded project depends on.
4
+ *
5
+ * Read from this package's own version rather than written down. Every package
6
+ * in the monorepo shares one version, and a caret range on 0.x does not cross a
7
+ * minor bump — so a hardcoded `^0.2.0` left here would make
8
+ * `create-invokable@0.3.0` scaffold projects pinned to an SDK it was never
9
+ * tested against.
10
+ */
11
+ function sdkRange() {
12
+ const manifest = new URL('../package.json', import.meta.url);
13
+ const { version } = JSON.parse(readFileSync(manifest, 'utf8'));
14
+ return `^${version}`;
15
+ }
1
16
  /** `deploy-thing` -> `DeployThing`, for a generated type name. */
2
17
  function pascal(value) {
3
18
  return value
@@ -91,7 +106,9 @@ export default defineTool({
91
106
  baseUrl: process.env.${envPrefix}_API ?? '${baseUrl}',
92
107
  authUrl: process.env.${envPrefix}_AUTH ?? '${authUrl}',
93
108
  },
94
- configDir: '~/.${spec.name}',
109
+ // Overridable so a second environment — a local server, CI — gets its own
110
+ // token instead of overwriting the one you are already signed in with.
111
+ configDir: process.env.${envPrefix}_CONFIG_DIR ?? '~/.${spec.name}',
95
112
  ${spec.spends ? '\n // Refuse `--yes` on spending commands unless `--max-spend` is also given.\n requireSpendLimit: true,\n' : ''}
96
113
  commands: {
97
114
  // Installs agent instructions into this project. login/logout/whoami/doctor
@@ -102,6 +119,133 @@ ${spec.spends ? gated : plain}
102
119
  });
103
120
  `;
104
121
  }
122
+ /**
123
+ * A runnable server for `--auth self-host`.
124
+ *
125
+ * Telling someone to "start a server that mounts @invokable/server" and handing
126
+ * them nothing is where the self-host path used to break: the CLI half was
127
+ * scaffolded and the other half was a sentence. This is the other half.
128
+ */
129
+ function serverSource(spec) {
130
+ return `#!/usr/bin/env node
131
+ /**
132
+ * Development auth + checkpoint server for ${spec.name}.
133
+ *
134
+ * npm run server # this file, on :8787
135
+ * npm run build && node bin/${spec.name}.mjs login
136
+ *
137
+ * Three things are served: auth and checkpoints come from @invokable/server,
138
+ * and the ${spec.command} endpoints are yours to replace with the real thing.
139
+ */
140
+ import { createServer } from 'node:http';
141
+ import {
142
+ CheckpointVerifier,
143
+ checkpointRoutes,
144
+ invokableAuth,
145
+ memoryCheckpointStore,
146
+ memoryStore,
147
+ verifyCheckpoint,
148
+ } from '@invokable/server';
149
+ import { nodeListener } from '@invokable/server/node';
150
+
151
+ const PORT = Number(process.env.PORT ?? 8787);
152
+
153
+ // Signs approval fingerprints. In production this comes from your secret
154
+ // manager and never leaves your infrastructure.
155
+ const CHECKPOINT_SECRET = process.env.CHECKPOINT_SECRET ?? 'dev-only-change-me-0123456789abcdef';
156
+
157
+ const verifier = new CheckpointVerifier({
158
+ secret: CHECKPOINT_SECRET,
159
+ // Development only — everything is lost on restart, and on serverless there
160
+ // is no shared memory at all. Swap for postgresCheckpointStore() before
161
+ // anyone depends on this. See the @invokable/server README.
162
+ store: memoryCheckpointStore(),
163
+ });
164
+
165
+ const auth = invokableAuth({
166
+ store: memoryStore(),
167
+ tokenPrefix: '${spec.name.replace(/-/g, '').slice(0, 4)}',
168
+ tokenTtl: null,
169
+
170
+ // THE HOOK YOU MUST REPLACE.
171
+ //
172
+ // Runs on the approval page, in the browser. It answers "who is signed in
173
+ // right now?" from your own session — a cookie, a JWT, whatever you already
174
+ // have. Returning null means signed out, and nothing can be approved.
175
+ requireSession: (_request) => ({
176
+ subject: 'dev@example.com',
177
+ displayName: 'Local Developer',
178
+ }),
179
+
180
+ // Optional: your own branded approval page. If you replace the default, KEEP
181
+ // the part naming the tool, version and machine, and the warning to approve
182
+ // only a login you just started — that display is the only defence against
183
+ // someone sending a user a code and asking them to approve it.
184
+ // approvePage: ({ device, user }) => renderMyPage(device, user),
185
+ });
186
+
187
+ const checkpoints = checkpointRoutes({ verifier });
188
+ ${spec.spends
189
+ ? `
190
+ // Guards only the endpoint that spends. Guarding the planning call too would
191
+ // mean the CLI could never fetch a plan to show the user, and the gate could
192
+ // never open.
193
+ const requireApproval = verifyCheckpoint({
194
+ verifier,
195
+ requiresApproval: (request) => new URL(request.url).pathname === '/v1/${spec.command}',
196
+ // Must return the same \`subject\` the CLI passes to checkpoint(). It binds an
197
+ // approval to one target, so an approval for A cannot act on B.
198
+ subjectFor: () => 'svc-1',
199
+ });
200
+ `
201
+ : ''}
202
+ const state = { runs: [], balance: 100 };
203
+ const json = (body, status = 200) =>
204
+ new Response(JSON.stringify(body), { status, headers: { 'content-type': 'application/json' } });
205
+
206
+ createServer(
207
+ nodeListener(async (request) => {
208
+ const { pathname } = new URL(request.url);
209
+ ${spec.spends
210
+ ? `
211
+ // Planning changes nothing, so it is not gated. It produces the summary the
212
+ // user is about to be asked to approve.
213
+ if (pathname === '/v1/${spec.command}/plan' && request.method === 'POST') {
214
+ const { env } = await request.json().catch(() => ({}));
215
+ return json({ id: 'svc-1', env, credits: 12, balance: state.balance, summary: { env } });
216
+ }
217
+
218
+ if (pathname === '/v1/${spec.command}' && request.method === 'POST') {
219
+ // Returns a 409 the CLI turns into exit 12 when the approval is missing,
220
+ // stale, expired or already used. Returns null when it is good.
221
+ const rejected = await requireApproval(request);
222
+ if (rejected) return rejected;
223
+
224
+ const id = \`run_\${state.runs.length + 1}\`;
225
+ state.runs.push(id);
226
+ state.balance -= 12;
227
+ return json({ ok: true, id, balanceAfter: state.balance });
228
+ }
229
+ `
230
+ : `
231
+ if (pathname.startsWith('/v1/${spec.command}/')) {
232
+ return json({ ok: true, name: decodeURIComponent(pathname.split('/').pop() ?? '') });
233
+ }
234
+ `}
235
+ // Each returns null for paths it does not own, so they compose with yours.
236
+ return (await auth(request)) ?? (await checkpoints(request));
237
+ }),
238
+ ).listen(PORT, () => {
239
+ console.error(\`${spec.name} dev server on http://127.0.0.1:\${PORT}\`);
240
+ console.error('');
241
+ console.error(' auth POST /device/start GET /device POST /device/token');
242
+ console.error(' checkpoints POST /checkpoints POST /checkpoints/verify');
243
+ console.error(' yours ${spec.spends ? `POST /v1/${spec.command}/plan POST /v1/${spec.command}` : `GET /v1/${spec.command}/:name`}');
244
+ console.error('');
245
+ console.error(' Next: npm run build && node bin/${spec.name}.mjs login');
246
+ });
247
+ `;
248
+ }
105
249
  function readme(spec) {
106
250
  const envPrefix = spec.name.toUpperCase().replace(/-/g, '_');
107
251
  return `# ${spec.name}
@@ -116,6 +260,14 @@ npm run build
116
260
  node bin/${spec.name}.mjs --help
117
261
  \`\`\`
118
262
 
263
+ \`${spec.name}\` is not on your PATH until you link it, so run it by path while
264
+ developing. To type the bare name instead:
265
+
266
+ \`\`\`bash
267
+ npm link # once
268
+ ${spec.name} --help
269
+ \`\`\`
270
+
119
271
  ## Try it
120
272
 
121
273
  \`\`\`bash
@@ -127,14 +279,48 @@ node bin/${spec.name}.mjs doctor --json
127
279
  \`\`\`
128
280
  ${spec.auth === 'self-host'
129
281
  ? `
130
- ### Run the auth server
282
+ ### Run the server
131
283
 
132
- This project is configured for self-hosted auth. Start a server that mounts
133
- \`@invokable/server\` on \`${apiUrls(spec).authUrl}\`, then:
284
+ This project is self-hosted, so it ships its own server \`server.mjs\` in this
285
+ directory. It serves three things:
286
+
287
+ | | |
288
+ |---|---|
289
+ | Auth | the device-code endpoints \`login\` talks to (from \`@invokable/server\`) |
290
+ | Checkpoints | issuing and verifying approval fingerprints (from \`@invokable/server\`) |
291
+ | \`/v1/${spec.command}\` | **yours** — replace with the real thing |
134
292
 
135
293
  \`\`\`bash
136
- node bin/${spec.name}.mjs login
294
+ npm run server # terminal 1, on :8787
295
+ npm run build
296
+ node bin/${spec.name}.mjs login # terminal 2
137
297
  \`\`\`
298
+
299
+ \`login\` prints a code and a URL. Open the URL, approve, and the CLI finishes on
300
+ its own.
301
+
302
+ ### Before this is production
303
+
304
+ \`server.mjs\` is wired for a laptop. Three things must change, and each is
305
+ marked in the file:
306
+
307
+ - **\`requireSession\`** returns a fixed user. Replace it with your own session
308
+ lookup — a cookie, a JWT, whatever you already have. Returning \`null\` means
309
+ signed out, and nothing can be approved.
310
+ - **\`memoryStore()\` and \`memoryCheckpointStore()\`** lose everything on
311
+ restart, and on serverless there is no shared memory at all. Swap for
312
+ \`postgresAuthStore()\` and \`postgresCheckpointStore()\`; see the
313
+ [\`@invokable/server\` README](https://www.npmjs.com/package/@invokable/server).
314
+ - **\`CHECKPOINT_SECRET\`** is a literal. Move it to your secret manager.
315
+
316
+ Two things the SDK deliberately leaves to you: CSRF protection on
317
+ \`/device/approve\` if you serve a cookie-authenticated form, and rate limiting
318
+ on \`/device/start\`.
319
+
320
+ Mounting in an app you already have? The handlers are
321
+ \`(Request) => Promise<Response | null>\` and return \`null\` for paths they do not
322
+ own, so they compose with your routes. \`@invokable/server/node\` adapts them to
323
+ Express.
138
324
  `
139
325
  : `
140
326
  ### Sign in
@@ -142,8 +328,15 @@ node bin/${spec.name}.mjs login
142
328
  Auth points at \`${HOSTED_AUTH_URL}\`. Override for local development:
143
329
 
144
330
  \`\`\`bash
145
- ${envPrefix}_AUTH=http://127.0.0.1:8787 node bin/${spec.name}.mjs login
331
+ ${envPrefix}_AUTH=http://127.0.0.1:8787 \\
332
+ ${envPrefix}_API=http://127.0.0.1:8787 \\
333
+ ${envPrefix}_CONFIG_DIR=~/.${spec.name}-local \\
334
+ node bin/${spec.name}.mjs login
146
335
  \`\`\`
336
+
337
+ Set \`${envPrefix}_CONFIG_DIR\` whenever you point at a second environment.
338
+ Without it the local token is written over the one for
339
+ \`${HOSTED_AUTH_URL}\` — same file, and you are signed out of the real thing.
147
340
  `}
148
341
  ## The contract
149
342
 
@@ -191,6 +384,7 @@ whenever you add a command; \`init --check\` fails CI when they are stale.
191
384
  }
192
385
  export function scaffold(spec) {
193
386
  const version = spec.version ?? '0.1.0';
387
+ const sdk = sdkRange();
194
388
  const pkg = {
195
389
  name: spec.name,
196
390
  version,
@@ -203,19 +397,22 @@ export function scaffold(spec) {
203
397
  build: 'tsc -p tsconfig.json',
204
398
  dev: 'tsc -p tsconfig.json --watch',
205
399
  test: 'invokable-test node bin/' + spec.name + '.mjs',
400
+ ...(spec.auth === 'self-host' ? { server: 'node server.mjs' } : {}),
206
401
  prepublishOnly: 'npm run build',
207
402
  },
208
403
  dependencies: {
209
- '@invokable/core': '^0.1.0',
210
- '@invokable/skills': '^0.1.0',
404
+ '@invokable/core': sdk,
405
+ '@invokable/skills': sdk,
406
+ // Only self-host projects ship a server; hosted tools talk to one.
407
+ ...(spec.auth === 'self-host' ? { '@invokable/server': sdk } : {}),
211
408
  },
212
409
  devDependencies: {
213
- '@invokable/conformance': '^0.1.0',
410
+ '@invokable/conformance': sdk,
214
411
  '@types/node': '^22.0.0',
215
412
  typescript: '^5.9.0',
216
413
  },
217
414
  };
218
- return [
415
+ const files = [
219
416
  { path: 'package.json', content: JSON.stringify(pkg, null, 2) + '\n' },
220
417
  {
221
418
  path: 'tsconfig.json',
@@ -279,5 +476,9 @@ jobs:
279
476
  `,
280
477
  },
281
478
  ];
479
+ if (spec.auth === 'self-host') {
480
+ files.push({ path: 'server.mjs', content: serverSource(spec), executable: true });
481
+ }
482
+ return files;
282
483
  }
283
484
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-invokable",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Scaffold an agent-native CLI.",
5
5
  "license": "MIT",
6
6
  "type": "module",