@tenderprompt/accounts 0.2.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 (90) hide show
  1. package/README.md +84 -0
  2. package/dist/api.d.ts +27 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +73 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/artifact.d.ts +8 -0
  7. package/dist/artifact.d.ts.map +1 -0
  8. package/dist/artifact.js +205 -0
  9. package/dist/artifact.js.map +1 -0
  10. package/dist/cli.d.ts +3 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +4 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/contracts.d.ts +96 -0
  15. package/dist/contracts.d.ts.map +1 -0
  16. package/dist/contracts.js +5 -0
  17. package/dist/contracts.js.map +1 -0
  18. package/dist/errors.d.ts +10 -0
  19. package/dist/errors.d.ts.map +1 -0
  20. package/dist/errors.js +19 -0
  21. package/dist/errors.js.map +1 -0
  22. package/dist/files.d.ts +21 -0
  23. package/dist/files.d.ts.map +1 -0
  24. package/dist/files.js +263 -0
  25. package/dist/files.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +4 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/main.d.ts +15 -0
  31. package/dist/main.d.ts.map +1 -0
  32. package/dist/main.js +565 -0
  33. package/dist/main.js.map +1 -0
  34. package/dist/processes.d.ts +12 -0
  35. package/dist/processes.d.ts.map +1 -0
  36. package/dist/processes.js +44 -0
  37. package/dist/processes.js.map +1 -0
  38. package/dist/starter.d.ts +20 -0
  39. package/dist/starter.d.ts.map +1 -0
  40. package/dist/starter.js +159 -0
  41. package/dist/starter.js.map +1 -0
  42. package/package.json +32 -0
  43. package/skill/tender-accounts/SKILL.md +111 -0
  44. package/templates/shopify-customer-account/AGENTS.md +14 -0
  45. package/templates/shopify-customer-account/README.md +44 -0
  46. package/templates/shopify-customer-account/apps/gateway/AGENTS.md +9 -0
  47. package/templates/shopify-customer-account/apps/gateway/README.md +9 -0
  48. package/templates/shopify-customer-account/apps/gateway/database-schema.json +49 -0
  49. package/templates/shopify-customer-account/apps/gateway/dot.dev.vars.example +11 -0
  50. package/templates/shopify-customer-account/apps/gateway/migrations/0001_customer_auth.sql +76 -0
  51. package/templates/shopify-customer-account/apps/gateway/package.json +25 -0
  52. package/templates/shopify-customer-account/apps/gateway/scripts/build-worker.mjs +15 -0
  53. package/templates/shopify-customer-account/apps/gateway/scripts/pack-tender-artifact.mjs +84 -0
  54. package/templates/shopify-customer-account/apps/gateway/src/platform/customer-auth/hostname-policy.ts +66 -0
  55. package/templates/shopify-customer-account/apps/gateway/src/platform/customer-auth/schema.ts +90 -0
  56. package/templates/shopify-customer-account/apps/gateway/src/platform/customer-auth/session-store.ts +864 -0
  57. package/templates/shopify-customer-account/apps/gateway/src/platform/customer-auth/shopify-route-adapter.ts +1157 -0
  58. package/templates/shopify-customer-account/apps/gateway/src/platform/runtime-hostname.ts +46 -0
  59. package/templates/shopify-customer-account/apps/gateway/src/portal-service.test.ts +18 -0
  60. package/templates/shopify-customer-account/apps/gateway/src/portal-service.ts +51 -0
  61. package/templates/shopify-customer-account/apps/gateway/src/runtime-config.test.ts +30 -0
  62. package/templates/shopify-customer-account/apps/gateway/src/runtime-config.ts +56 -0
  63. package/templates/shopify-customer-account/apps/gateway/src/worker.ts +85 -0
  64. package/templates/shopify-customer-account/apps/gateway/tender-accounts.json +10 -0
  65. package/templates/shopify-customer-account/apps/gateway/tender-app.config.json +40 -0
  66. package/templates/shopify-customer-account/apps/gateway/tsconfig.json +13 -0
  67. package/templates/shopify-customer-account/apps/gateway/vitest.config.ts +8 -0
  68. package/templates/shopify-customer-account/apps/gateway/worker-configuration.d.ts +26 -0
  69. package/templates/shopify-customer-account/apps/gateway/wrangler.jsonc +42 -0
  70. package/templates/shopify-customer-account/apps/portal/AGENTS.md +9 -0
  71. package/templates/shopify-customer-account/apps/portal/README.md +5 -0
  72. package/templates/shopify-customer-account/apps/portal/index.html +13 -0
  73. package/templates/shopify-customer-account/apps/portal/package.json +33 -0
  74. package/templates/shopify-customer-account/apps/portal/scripts/build-worker.mjs +11 -0
  75. package/templates/shopify-customer-account/apps/portal/scripts/pack-tender-artifact.mjs +63 -0
  76. package/templates/shopify-customer-account/apps/portal/scripts/portal-worker.mjs +84 -0
  77. package/templates/shopify-customer-account/apps/portal/scripts/portal-worker.test.mjs +14 -0
  78. package/templates/shopify-customer-account/apps/portal/src/App.tsx +111 -0
  79. package/templates/shopify-customer-account/apps/portal/src/main.tsx +10 -0
  80. package/templates/shopify-customer-account/apps/portal/src/styles.css +54 -0
  81. package/templates/shopify-customer-account/apps/portal/tender-accounts.json +10 -0
  82. package/templates/shopify-customer-account/apps/portal/tender-app.config.json +19 -0
  83. package/templates/shopify-customer-account/apps/portal/tsconfig.json +14 -0
  84. package/templates/shopify-customer-account/apps/portal/vite.config.ts +7 -0
  85. package/templates/shopify-customer-account/apps/portal/worker-configuration.d.ts +11 -0
  86. package/templates/shopify-customer-account/apps/portal/wrangler.jsonc +22 -0
  87. package/templates/shopify-customer-account/dot.dev.vars.example +3 -0
  88. package/templates/shopify-customer-account/dot.gitignore +9 -0
  89. package/templates/shopify-customer-account/package.json +22 -0
  90. package/templates/shopify-customer-account/scripts/artifact-contract.mjs +109 -0
package/dist/main.js ADDED
@@ -0,0 +1,565 @@
1
+ import { fileURLToPath } from "node:url";
2
+ import { copyFile, mkdir, readFile } from "node:fs/promises";
3
+ import { dirname, resolve } from "node:path";
4
+ import { AgentApiClient } from "./api.js";
5
+ import { labelLocalArtifact, verifyArtifact } from "./artifact.js";
6
+ import { BUILD_ENVELOPE_FILENAME, CLI_CONFIG_SCHEMA, CLI_LINK_SCHEMA, } from "./contracts.js";
7
+ import { CliApiError, CliError } from "./errors.js";
8
+ import { loadProjectContext, normalizeApiUrl, pathExists, readBoundedFile, readToken, requiredProjectId, resolveArtifactDirectory, safeArtifactPath, writeProjectLink, } from "./files.js";
9
+ import { captureCommand, runProjectCommand } from "./processes.js";
10
+ import { initializeStarter } from "./starter.js";
11
+ export const CLI_VERSION = "0.2.0";
12
+ const DEFAULT_RUNTIME = {
13
+ cwd: process.cwd(),
14
+ environment: process.env,
15
+ stdin: process.stdin,
16
+ stdout: process.stdout,
17
+ stderr: process.stderr,
18
+ fetcher: fetch,
19
+ sleep: async (milliseconds) => await new Promise((resolvePromise) => setTimeout(resolvePromise, milliseconds)),
20
+ runProjectCommand,
21
+ captureCommand,
22
+ };
23
+ export async function runCli(argv, overrides = {}) {
24
+ const runtime = { ...DEFAULT_RUNTIME, ...overrides };
25
+ const jsonRequested = argv.includes("--json");
26
+ try {
27
+ const { topic, values } = commandTopic(argv);
28
+ if (topic === "help") {
29
+ runtime.stdout.write(`${helpText(values[0])}\n`);
30
+ return 0;
31
+ }
32
+ if (topic === "version") {
33
+ runtime.stdout.write(`${CLI_VERSION}\n`);
34
+ return 0;
35
+ }
36
+ const options = parseOptions(values);
37
+ assertAllowedOptions(topic, options);
38
+ const cwd = resolve(runtime.cwd, options.flags.get("cwd") ?? ".");
39
+ const result = await execute(topic, options, cwd, runtime);
40
+ if (result.raw !== undefined)
41
+ runtime.stdout.write(result.raw.endsWith("\n") ? result.raw : `${result.raw}\n`);
42
+ else if (result.value !== undefined)
43
+ writeOutput(result.value, options, runtime);
44
+ return result.exitCode ?? 0;
45
+ }
46
+ catch (error) {
47
+ const normalized = normalizeError(error);
48
+ if (jsonRequested) {
49
+ runtime.stderr.write(`${JSON.stringify({ error: normalized })}\n`);
50
+ }
51
+ else {
52
+ runtime.stderr.write(`Error: ${normalized.message}\n`);
53
+ if (normalized.hint)
54
+ runtime.stderr.write(`Try: ${normalized.hint}\n`);
55
+ if (normalized.requestId)
56
+ runtime.stderr.write(`request_id: ${normalized.requestId}\n`);
57
+ }
58
+ return 1;
59
+ }
60
+ }
61
+ async function execute(topic, options, cwd, runtime) {
62
+ switch (topic) {
63
+ case "init":
64
+ return { value: await initializeStarter({
65
+ cwd,
66
+ directory: options.flags.get("directory"),
67
+ name: requiredStarterName(options),
68
+ slug: options.flags.get("slug"),
69
+ template: options.flags.get("template"),
70
+ dryRun: options.booleans.has("dry-run"),
71
+ }) };
72
+ case "config example":
73
+ return { value: exampleConfig() };
74
+ case "skill print":
75
+ return options.json
76
+ ? { value: { schema: "tender.accounts-skill/v1", content: await readSkill() } }
77
+ : { raw: await readSkill() };
78
+ case "skill install":
79
+ return { value: await installSkill(cwd, options) };
80
+ case "dev":
81
+ return await runDev(cwd, options, runtime);
82
+ case "check":
83
+ return { value: await runBuildStage(cwd, options, runtime, "check") };
84
+ case "build":
85
+ return { value: await buildProject(cwd, options, runtime) };
86
+ case "auth status":
87
+ return { value: await authStatus(cwd, options, runtime) };
88
+ case "link":
89
+ return { value: await linkProject(cwd, options, runtime) };
90
+ case "doctor":
91
+ return await doctor(cwd, options, runtime);
92
+ case "preview":
93
+ return { value: await preview(cwd, options, runtime) };
94
+ case "delivery status":
95
+ return { value: await deliveryStatus(cwd, options, runtime) };
96
+ case "delivery preview":
97
+ return { value: await deliveryPreview(cwd, options, runtime) };
98
+ case "delivery retry":
99
+ return { value: await deliveryRetry(cwd, options, runtime) };
100
+ default:
101
+ throw new CliError("command_unknown", `Unknown command: ${topic}.`, "tender-accounts --help");
102
+ }
103
+ }
104
+ async function authStatus(cwd, options, runtime) {
105
+ const context = await optionalContext(cwd);
106
+ const { client } = await authenticatedClient(cwd, context?.link ?? null, options, runtime);
107
+ return await client.whoami();
108
+ }
109
+ async function linkProject(cwd, options, runtime) {
110
+ const context = await loadProjectContext(cwd);
111
+ const apiUrl = selectedApiUrl(options, context.link, runtime.environment);
112
+ const token = await readToken(context.root, runtime.environment, options.booleans.has("token-stdin") ? runtime.stdin : undefined);
113
+ const principal = await new AgentApiClient(apiUrl, token, runtime.fetcher).whoami();
114
+ const requested = options.flags.get("project");
115
+ const project = requested
116
+ ? principal.projects.find((candidate) => candidate.projectId === requiredProjectId(requested))
117
+ : principal.projects.length === 1 ? principal.projects[0] : undefined;
118
+ if (!project) {
119
+ throw new CliError(requested ? "project_not_permitted" : "project_required", requested
120
+ ? "The current credential is not permitted to use that project."
121
+ : "The credential grants more than one project; select one explicitly.", `tender-accounts link --project ${principal.projects[0]?.projectId ?? "prj_..."} --json`);
122
+ }
123
+ if (project.role !== "developer") {
124
+ throw new CliError("project_role_insufficient", "The selected project grant is read-only and cannot create previews.", "Ask a merchant administrator for a short-lived developer credential scoped to this project.");
125
+ }
126
+ const path = await writeProjectLink(context.root, {
127
+ schema: CLI_LINK_SCHEMA,
128
+ projectId: project.projectId,
129
+ apiUrl,
130
+ });
131
+ return {
132
+ status: "linked",
133
+ tenantId: principal.tenantId,
134
+ projectId: project.projectId,
135
+ role: project.role,
136
+ apiUrl,
137
+ linkPath: path,
138
+ containsCredential: false,
139
+ reminder: "Keep .tender/ and .dev.vars out of Git.",
140
+ };
141
+ }
142
+ async function doctor(cwd, options, runtime) {
143
+ const checks = [];
144
+ const nodeMajor = Number(process.versions.node.split(".")[0]);
145
+ checks.push({
146
+ name: "node",
147
+ status: nodeMajor >= 22 ? "pass" : "fail",
148
+ message: nodeMajor >= 22 ? `Node ${process.versions.node}` : "Node 22 or newer is required.",
149
+ });
150
+ let context = null;
151
+ try {
152
+ context = await loadProjectContext(cwd);
153
+ checks.push({ name: "config", status: "pass", message: context.configPath });
154
+ }
155
+ catch (error) {
156
+ checks.push({ name: "config", status: "fail", message: normalizeError(error).message });
157
+ }
158
+ if (context) {
159
+ checks.push(context.link
160
+ ? { name: "link", status: "pass", message: `${context.link.projectId} at ${context.link.apiUrl}` }
161
+ : { name: "link", status: "fail", message: "Run tender-accounts link after receiving a project-scoped credential." });
162
+ try {
163
+ const { client } = await authenticatedClient(cwd, context.link, options, runtime);
164
+ const principal = await client.whoami();
165
+ const project = context.link
166
+ ? principal.projects.find((candidate) => candidate.projectId === context.link?.projectId)
167
+ : undefined;
168
+ checks.push({ name: "authentication", status: "pass", message: `${principal.ownerEmail} · ${principal.label}` });
169
+ checks.push(project
170
+ ? { name: "project-access", status: project.role === "developer" ? "pass" : "fail", message: `${project.projectId} · ${project.role}` }
171
+ : { name: "project-access", status: "fail", message: "The linked project is outside this credential's scope." });
172
+ }
173
+ catch (error) {
174
+ checks.push({ name: "authentication", status: "fail", message: normalizeError(error).message });
175
+ }
176
+ const artifactDirectory = resolveArtifactDirectory(context);
177
+ checks.push(await pathExists(resolve(artifactDirectory, BUILD_ENVELOPE_FILENAME))
178
+ ? { name: "artifact", status: "pass", message: artifactDirectory }
179
+ : { name: "artifact", status: "warn", message: "No packaged artifact yet; tender-accounts build will create it." });
180
+ }
181
+ const failed = checks.some((check) => check.status === "fail");
182
+ return {
183
+ value: { status: failed ? "failed" : "ready", checks },
184
+ exitCode: failed ? 1 : 0,
185
+ };
186
+ }
187
+ async function runDev(cwd, options, runtime) {
188
+ const context = await loadProjectContext(cwd);
189
+ if (!context.config.commands.dev) {
190
+ throw new CliError("dev_command_missing", "This app does not declare commands.dev in tender-accounts.json.");
191
+ }
192
+ await runtime.runProjectCommand({
193
+ command: context.config.commands.dev,
194
+ cwd: context.root,
195
+ environment: runtime.environment,
196
+ machineOutput: options.json,
197
+ });
198
+ return { value: { status: "stopped", command: context.config.commands.dev } };
199
+ }
200
+ async function runBuildStage(cwd, options, runtime, stage, extraEnvironment = {}) {
201
+ const context = await loadProjectContext(cwd);
202
+ const command = context.config.commands[stage];
203
+ runtime.stderr.write(`tender-accounts: ${stage}\n`);
204
+ await runtime.runProjectCommand({
205
+ command,
206
+ cwd: context.root,
207
+ environment: { ...runtime.environment, ...extraEnvironment },
208
+ machineOutput: options.json,
209
+ });
210
+ return { status: "succeeded", stage, command };
211
+ }
212
+ async function buildProject(cwd, options, runtime) {
213
+ const context = await loadProjectContext(cwd);
214
+ const source = await sourceState(context.root, runtime);
215
+ await runBuildStage(cwd, options, runtime, "check", { TENDER_SOURCE_REVISION: source.revision });
216
+ await runBuildStage(cwd, options, runtime, "package", { TENDER_SOURCE_REVISION: source.revision });
217
+ let artifact = await verifyArtifact(resolveArtifactDirectory(context));
218
+ artifact = await labelLocalArtifact(artifact, { gitRevision: source.revision, dirty: source.dirty });
219
+ return buildSummary(artifact, source.dirty);
220
+ }
221
+ async function preview(cwd, options, runtime) {
222
+ const context = await loadProjectContext(cwd);
223
+ const build = await buildProject(cwd, options, runtime);
224
+ const artifact = await verifyArtifact(resolveArtifactDirectory(context));
225
+ if (options.booleans.has("dry-run")) {
226
+ return { ...build, status: "validated", uploaded: false, productionChanged: false };
227
+ }
228
+ if (!context.link) {
229
+ throw new CliError("project_not_linked", "This app is not linked to a Tender Accounts project.", "tender-accounts link --json");
230
+ }
231
+ const { client } = await authenticatedClient(cwd, context.link, options, runtime);
232
+ const suffix = artifact.envelope.bundleDigest.slice(0, 24);
233
+ const submission = await client.createSubmission(context.link.projectId, {
234
+ idempotencyKey: options.flags.get("submission-key") ?? `submit-${suffix}`,
235
+ envelope: artifact.envelope,
236
+ });
237
+ for (const file of submission.files) {
238
+ if (file.uploaded)
239
+ continue;
240
+ const bytes = await readBoundedFile(safeArtifactPath(artifact.directory, file.path), file.bytes);
241
+ await client.uploadFile(submission.id, file.index, bytes);
242
+ }
243
+ const finalized = await client.finalizeSubmission(submission.id);
244
+ if (finalized.status !== "ready" || !finalized.releaseId) {
245
+ throw new CliError("artifact_finalize_failed", "The artifact submission did not finalize to a ready release.");
246
+ }
247
+ let delivery = await client.createDelivery(context.link.projectId, {
248
+ submissionId: finalized.id,
249
+ idempotencyKey: options.flags.get("delivery-key") ?? `preview-${suffix}`,
250
+ });
251
+ if (options.booleans.has("no-wait")) {
252
+ return deliverySummary(context.link.projectId, finalized.id, finalized.releaseId, delivery);
253
+ }
254
+ delivery = await waitForDelivery(client, delivery, options, runtime);
255
+ const session = await client.previewSession(delivery.id, options.flags.get("return-path") ?? context.config.returnPath);
256
+ return {
257
+ ...deliverySummary(context.link.projectId, finalized.id, finalized.releaseId, delivery),
258
+ status: "succeeded",
259
+ sourceRevision: artifact.envelope.sourceRevision,
260
+ bundleDigest: artifact.envelope.bundleDigest,
261
+ previewUrl: session.url,
262
+ previewGrantId: session.grantId,
263
+ previewExpiresAt: session.expiresAt,
264
+ productionChanged: false,
265
+ };
266
+ }
267
+ async function deliveryStatus(cwd, options, runtime) {
268
+ const context = await loadProjectContext(cwd);
269
+ const { client } = await authenticatedClient(cwd, context.link, options, runtime);
270
+ return await client.delivery(requiredFlag(options, "delivery"));
271
+ }
272
+ async function deliveryPreview(cwd, options, runtime) {
273
+ const context = await loadProjectContext(cwd);
274
+ const { client } = await authenticatedClient(cwd, context.link, options, runtime);
275
+ const deliveryId = requiredFlag(options, "delivery");
276
+ const session = await client.previewSession(deliveryId, options.flags.get("return-path") ?? context.config.returnPath);
277
+ return { status: "ready", deliveryId, previewUrl: session.url, expiresAt: session.expiresAt };
278
+ }
279
+ async function deliveryRetry(cwd, options, runtime) {
280
+ const context = await loadProjectContext(cwd);
281
+ const { client } = await authenticatedClient(cwd, context.link, options, runtime);
282
+ return await client.retryDelivery(requiredFlag(options, "delivery"));
283
+ }
284
+ async function authenticatedClient(cwd, link, options, runtime) {
285
+ const apiUrl = selectedApiUrl(options, link, runtime.environment);
286
+ const token = await readToken(cwd, runtime.environment, options.booleans.has("token-stdin") ? runtime.stdin : undefined);
287
+ return { client: new AgentApiClient(apiUrl, token, runtime.fetcher), apiUrl };
288
+ }
289
+ function selectedApiUrl(options, link, environment) {
290
+ return normalizeApiUrl(options.flags.get("api-url")
291
+ ?? environment.TENDER_ACCOUNTS_API_URL
292
+ ?? link?.apiUrl
293
+ ?? "https://agents.tenderprompt.dev");
294
+ }
295
+ async function sourceState(root, runtime) {
296
+ let revision;
297
+ try {
298
+ revision = (await runtime.captureCommand("git", ["rev-parse", "HEAD"], root)).stdout;
299
+ }
300
+ catch {
301
+ throw new CliError("source_revision_unavailable", "The app must be inside a Git repository with an initial commit before it can be packaged.", "git add . && git commit -m 'Initialize account app'");
302
+ }
303
+ if (!/^[a-f0-9]{40}$/u.test(revision)) {
304
+ throw new CliError("source_revision_unavailable", "Git did not return a 40-character source revision.");
305
+ }
306
+ const status = await runtime.captureCommand("git", ["status", "--porcelain", "--untracked-files=normal"], root);
307
+ return { revision, dirty: status.stdout.length > 0 };
308
+ }
309
+ async function waitForDelivery(client, initial, options, runtime) {
310
+ const timeoutSeconds = numberFlag(options, "timeout-seconds", 60, 1800, 900);
311
+ const deadline = Date.now() + timeoutSeconds * 1000;
312
+ let current = initial;
313
+ while (current.workflow.status === "requested" || current.workflow.status === "running") {
314
+ if (Date.now() >= deadline) {
315
+ throw new CliError("preview_timeout", `Preview deployment is still ${current.workflow.status}.`, `tender-accounts delivery status --delivery ${current.id} --json`);
316
+ }
317
+ await runtime.sleep(2000);
318
+ current = await client.delivery(current.id);
319
+ }
320
+ if (current.workflow.status !== "succeeded") {
321
+ throw new CliError(current.workflow.error?.code ?? "preview_failed", current.workflow.error?.message ?? "The preview workflow failed.", `tender-accounts delivery retry --delivery ${current.id} --json`);
322
+ }
323
+ return current;
324
+ }
325
+ function deliverySummary(projectId, submissionId, releaseId, delivery) {
326
+ return {
327
+ status: delivery.workflow.status,
328
+ projectId,
329
+ submissionId,
330
+ releaseId,
331
+ deliveryId: delivery.id,
332
+ workflowId: delivery.workflow.id,
333
+ compositionId: delivery.workflow.result?.compositionId ?? null,
334
+ };
335
+ }
336
+ function buildSummary(artifact, dirty) {
337
+ return {
338
+ status: "built",
339
+ app: artifact.envelope.manifest.app.slug,
340
+ sourceRevision: artifact.envelope.sourceRevision,
341
+ dirty,
342
+ bundleDigest: artifact.envelope.bundleDigest,
343
+ artifactDirectory: artifact.directory,
344
+ fileCount: artifact.fileCount,
345
+ totalBytes: artifact.totalBytes,
346
+ declaredResources: artifact.envelope.manifest.resources.length,
347
+ declaredServices: artifact.envelope.manifest.services.length,
348
+ declaredSecrets: artifact.envelope.manifest.secrets ?? [],
349
+ };
350
+ }
351
+ async function optionalContext(cwd) {
352
+ try {
353
+ return await loadProjectContext(cwd);
354
+ }
355
+ catch (error) {
356
+ if (error instanceof CliError && error.code === "file_missing")
357
+ return null;
358
+ throw error;
359
+ }
360
+ }
361
+ async function installSkill(cwd, options) {
362
+ const agent = options.flags.get("agent") ?? "codex";
363
+ const requestedDirectory = options.flags.get("directory");
364
+ const base = requestedDirectory
365
+ ? resolve(cwd, requestedDirectory)
366
+ : agent === "codex"
367
+ ? resolve(cwd, ".agents/skills")
368
+ : agent === "claude"
369
+ ? resolve(cwd, ".claude/skills")
370
+ : null;
371
+ if (!base) {
372
+ throw new CliError("skill_target_invalid", "--agent must be codex or claude unless --directory is provided.");
373
+ }
374
+ const target = resolve(base, "tender-accounts/SKILL.md");
375
+ if (await pathExists(target) && !options.booleans.has("force")) {
376
+ throw new CliError("skill_exists", `A Tender Accounts skill already exists at ${target}.`, `tender-accounts skill install --agent ${agent} --force`);
377
+ }
378
+ await mkdir(dirname(target), { recursive: true });
379
+ await copyFile(skillPath(), target);
380
+ return { status: "installed", agent, path: target };
381
+ }
382
+ async function readSkill() {
383
+ return await readFile(skillPath(), "utf8");
384
+ }
385
+ function skillPath() {
386
+ return fileURLToPath(new URL("../skill/tender-accounts/SKILL.md", import.meta.url));
387
+ }
388
+ function exampleConfig() {
389
+ return {
390
+ schema: CLI_CONFIG_SCHEMA,
391
+ commands: {
392
+ dev: "npm run dev",
393
+ check: "npm run check",
394
+ package: "npm run pack:tender",
395
+ },
396
+ artifactDirectory: ".tender/artifacts/current",
397
+ returnPath: "/account",
398
+ };
399
+ }
400
+ function commandTopic(argv) {
401
+ if (argv.length === 0 || argv[0] === "help" || argv[0] === "--help" || argv[0] === "-h") {
402
+ return { topic: "help", values: argv.slice(1) };
403
+ }
404
+ if (argv[0] === "--version" || argv[0] === "version")
405
+ return { topic: "version", values: argv.slice(1) };
406
+ const parent = argv[0];
407
+ if (parent === "auth" || parent === "delivery" || parent === "skill" || parent === "config") {
408
+ const child = argv[1];
409
+ if (!child || child.startsWith("--"))
410
+ return { topic: "help", values: [parent] };
411
+ if (argv.includes("--help") || argv.includes("-h"))
412
+ return { topic: "help", values: [`${parent} ${child}`] };
413
+ return { topic: `${parent} ${child}`, values: argv.slice(2) };
414
+ }
415
+ if (argv.includes("--help") || argv.includes("-h"))
416
+ return { topic: "help", values: [parent] };
417
+ const legacy = {
418
+ "auth-check": "auth status",
419
+ status: "delivery status",
420
+ "preview-session": "delivery preview",
421
+ };
422
+ return { topic: legacy[parent] ?? parent ?? "help", values: argv.slice(1) };
423
+ }
424
+ function parseOptions(values) {
425
+ const flags = new Map();
426
+ const booleans = new Set();
427
+ const booleanNames = new Set(["json", "token-stdin", "dry-run", "no-wait", "force"]);
428
+ for (let index = 0; index < values.length; index += 1) {
429
+ const raw = values[index];
430
+ if (!raw?.startsWith("--"))
431
+ throw new CliError("argument_unexpected", `Unexpected argument: ${raw ?? ""}.`);
432
+ const name = raw.slice(2);
433
+ if (name === "token") {
434
+ throw new CliError("credential_argument_forbidden", "Never pass credentials as command-line arguments.");
435
+ }
436
+ if (booleanNames.has(name)) {
437
+ if (booleans.has(name))
438
+ throw new CliError("argument_duplicate", `Duplicate --${name} option.`);
439
+ booleans.add(name);
440
+ continue;
441
+ }
442
+ const value = values[index + 1];
443
+ if (!value || value.startsWith("--") || flags.has(name)) {
444
+ throw new CliError("argument_value_missing", `Option --${name} requires exactly one value.`);
445
+ }
446
+ flags.set(name, value);
447
+ index += 1;
448
+ }
449
+ return { flags, booleans, json: booleans.has("json") };
450
+ }
451
+ function assertAllowedOptions(topic, options) {
452
+ const common = ["cwd", "json"];
453
+ const authentication = ["api-url", "token-stdin"];
454
+ const allowed = {
455
+ init: [...common, "name", "slug", "directory", "template", "dry-run"],
456
+ "config example": common,
457
+ "skill print": common,
458
+ "skill install": [...common, "agent", "directory", "force"],
459
+ dev: common,
460
+ check: common,
461
+ build: common,
462
+ "auth status": [...common, ...authentication],
463
+ link: [...common, ...authentication, "project"],
464
+ doctor: [...common, ...authentication],
465
+ preview: [
466
+ ...common,
467
+ ...authentication,
468
+ "dry-run",
469
+ "no-wait",
470
+ "submission-key",
471
+ "delivery-key",
472
+ "timeout-seconds",
473
+ "return-path",
474
+ ],
475
+ "delivery status": [...common, ...authentication, "delivery"],
476
+ "delivery preview": [...common, ...authentication, "delivery", "return-path"],
477
+ "delivery retry": [...common, ...authentication, "delivery"],
478
+ };
479
+ const accepted = new Set(allowed[topic] ?? common);
480
+ const provided = [...options.flags.keys(), ...options.booleans];
481
+ const unexpected = provided.find((name) => !accepted.has(name));
482
+ if (unexpected) {
483
+ throw new CliError("argument_unknown", `Option --${unexpected} is not valid for ${topic}.`, `tender-accounts ${topic} --help`);
484
+ }
485
+ }
486
+ function requiredFlag(options, name) {
487
+ const value = options.flags.get(name);
488
+ if (!value) {
489
+ throw new CliError("argument_required", `Missing --${name}.`, `tender-accounts delivery status --${name} <value> --json`);
490
+ }
491
+ return value;
492
+ }
493
+ function requiredStarterName(options) {
494
+ const value = options.flags.get("name");
495
+ if (!value) {
496
+ throw new CliError("argument_required", "Missing --name.", "tender-accounts init --name \"My customer account\" --directory ./my-account");
497
+ }
498
+ return value;
499
+ }
500
+ function numberFlag(options, name, minimum, maximum, fallback) {
501
+ const raw = options.flags.get(name);
502
+ if (!raw)
503
+ return fallback;
504
+ const value = Number(raw);
505
+ if (!Number.isSafeInteger(value) || value < minimum || value > maximum) {
506
+ throw new CliError("argument_invalid", `--${name} must be an integer between ${minimum} and ${maximum}.`);
507
+ }
508
+ return value;
509
+ }
510
+ function writeOutput(value, options, runtime) {
511
+ if (options.json) {
512
+ runtime.stdout.write(`${JSON.stringify(value)}\n`);
513
+ return;
514
+ }
515
+ if (isRecord(value) && typeof value.previewUrl === "string") {
516
+ runtime.stdout.write(`preview ready\nurl: ${value.previewUrl}\ndelivery_id: ${String(value.deliveryId ?? "")}\n`);
517
+ return;
518
+ }
519
+ if (isRecord(value) && Array.isArray(value.checks)) {
520
+ for (const check of value.checks) {
521
+ if (isRecord(check))
522
+ runtime.stdout.write(`${String(check.status).padEnd(4)} ${String(check.name)}: ${String(check.message)}\n`);
523
+ }
524
+ return;
525
+ }
526
+ runtime.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
527
+ }
528
+ function helpText(topic) {
529
+ const topics = {
530
+ init: "Usage: tender-accounts init --name NAME [--slug SLUG] [--directory PATH] [--template shopify-customer-account] [--dry-run] [--json]\n\nCreate a new merchant-owned Shopify gateway and React portal in an empty directory.\n\nExamples:\n tender-accounts init --name \"Acme account\" --directory ./acme-account\n tender-accounts init --name \"Acme account\" --directory ./acme-account --dry-run --json",
531
+ auth: "Usage: tender-accounts auth status [--api-url URL] [--json]",
532
+ "auth status": "Usage: tender-accounts auth status [--api-url URL] [--token-stdin] [--json]\n\nValidate the current project-scoped credential and list its permitted projects.",
533
+ link: "Usage: tender-accounts link [--project PROJECT_ID] [--api-url URL] [--json]\n\nLink this app checkout to exactly one project permitted by the current credential.",
534
+ doctor: "Usage: tender-accounts doctor [--json]\n\nValidate configuration, authentication, project scope, and local artifact readiness.",
535
+ dev: "Usage: tender-accounts dev\n\nRun the app's declared local development command. This never deploys to Cloudflare.",
536
+ check: "Usage: tender-accounts check [--json]\n\nRun the app's declared validation command.",
537
+ build: "Usage: tender-accounts build [--json]\n\nRun validation and packaging, then verify the complete portable artifact.",
538
+ preview: "Usage: tender-accounts preview [--dry-run] [--no-wait] [--timeout-seconds N] [--return-path /account] [--json]\n\nBuild and submit an exact preview. --dry-run validates locally without authentication or upload.",
539
+ delivery: "Usage: tender-accounts delivery <status|preview|retry> --delivery DELIVERY_ID [--json]",
540
+ "delivery status": "Usage: tender-accounts delivery status --delivery DELIVERY_ID [--json]",
541
+ "delivery preview": "Usage: tender-accounts delivery preview --delivery DELIVERY_ID [--return-path /account] [--json]\n\nMint a fresh 15-minute same-domain preview session.",
542
+ "delivery retry": "Usage: tender-accounts delivery retry --delivery DELIVERY_ID [--json]\n\nRetry one requested or failed preview workflow idempotently.",
543
+ skill: "Usage: tender-accounts skill <print|install> [options]",
544
+ "skill print": "Usage: tender-accounts skill print [--json]",
545
+ "skill install": "Usage: tender-accounts skill install [--agent codex|claude] [--directory PATH] [--force] [--json]",
546
+ config: "Usage: tender-accounts config example [--json]",
547
+ "config example": "Usage: tender-accounts config example [--json]\n\nPrint the committed tender-accounts.json contract.",
548
+ };
549
+ if (topic && topics[topic])
550
+ return topics[topic];
551
+ return `Tender Accounts merchant developer CLI ${CLI_VERSION}\n\nCommands:\n init Create a new Shopify account starter\n auth status Validate the current scoped credential\n link Link this checkout to one permitted project\n doctor Check developer readiness\n dev Run the project-owned local dev command\n check Run project validation\n build Package and verify a portable artifact\n preview Build and deploy an exact preview\n delivery status Read preview workflow state\n delivery preview Mint a fresh preview session\n delivery retry Retry a failed preview workflow\n skill install Install the Tender Accounts agent skill\n config example Print the project configuration contract\n\nThere is intentionally no production publish command.\nRun tender-accounts <command> --help for examples.`;
552
+ }
553
+ function normalizeError(error) {
554
+ if (error instanceof CliApiError) {
555
+ return { code: error.code, message: error.message, ...(error.hint ? { hint: error.hint } : {}), ...(error.requestId ? { requestId: error.requestId } : {}) };
556
+ }
557
+ if (error instanceof CliError) {
558
+ return { code: error.code, message: error.message, ...(error.hint ? { hint: error.hint } : {}) };
559
+ }
560
+ return { code: "cli_failed", message: error instanceof Error ? error.message : "Tender Accounts CLI failed." };
561
+ }
562
+ function isRecord(value) {
563
+ return typeof value === "object" && value !== null && !Array.isArray(value);
564
+ }
565
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface CommandResult {
2
+ stdout: string;
3
+ stderr: string;
4
+ }
5
+ export declare function runProjectCommand(input: {
6
+ command: string;
7
+ cwd: string;
8
+ environment: NodeJS.ProcessEnv;
9
+ machineOutput: boolean;
10
+ }): Promise<void>;
11
+ export declare function captureCommand(command: string, args: string[], cwd: string): Promise<CommandResult>;
12
+ //# sourceMappingURL=processes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processes.d.ts","sourceRoot":"","sources":["../src/processes.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAiBzG"}