@order3000/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.
- package/LICENSE +21 -0
- package/README.md +179 -0
- package/dist/cli.js +2537 -0
- package/dist/cli.js.map +1 -0
- package/package.json +47 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/commands/auth/index.ts","../src/commands/auth/list.ts","../src/config/profile.ts","../src/config/paths.ts","../src/config/schema.ts","../src/output/exit.ts","../src/errors.ts","../src/commands/auth/login.ts","../src/auth/exchange.ts","../src/auth/keychain.ts","../src/auth/token-cache.ts","../src/auth/schema.ts","../src/output/tty.ts","../src/commands/auth/logout.ts","../src/commands/auth/use.ts","../src/commands/auth/whoami.ts","../src/auth/client-factory.ts","../src/auth/credentials.ts","../src/commands/bind.ts","../src/output/format.ts","../src/schema/export.ts","../src/handlers/areas/getAvailability.ts","../src/handlers/_shared/schemas.ts","../src/handlers/types.ts","../src/schema/version.ts","../src/handlers/areas/getByAccessor.ts","../src/handlers/areas/list.ts","../src/handlers/areas/submitBookingRequest.ts","../src/handlers/_shared/jsonInput.ts","../src/handlers/baskets/abandon.ts","../src/handlers/baskets/add.ts","../src/handlers/baskets/get.ts","../src/handlers/baskets/getTotals.ts","../src/handlers/baskets/remove.ts","../src/handlers/baskets/setDeclaredReturns.ts","../src/handlers/events/get.ts","../src/handlers/events/getByAccessor.ts","../src/handlers/events/list.ts","../src/handlers/events/place.ts","../src/handlers/menus/get.ts","../src/handlers/menus/getBundles.ts","../src/handlers/menus/getByAccessor.ts","../src/handlers/menus/getSubscriptions.ts","../src/handlers/orders/confirm.ts","../src/handlers/orders/get.ts","../src/handlers/orders/getLatest.ts","../src/handlers/orders/place.ts","../src/handlers/paymentIntents/create.ts","../src/handlers/paymentIntents/createDelta.ts","../src/handlers/paymentIntents/reduceDelta.ts","../src/handlers/reservations/get.ts","../src/handlers/reservations/make.ts","../src/handlers/subscriptions/cancel.ts","../src/handlers/subscriptions/get.ts","../src/handlers/subscriptions/getByAccessor.ts","../src/handlers/subscriptions/getCredits.ts","../src/handlers/subscriptions/subscribe.ts","../src/handlers/system/ping.ts","../package.json","../src/version.ts","../src/handlers/teamOrders/autoExtendFulfillmentIfExpired.ts","../src/handlers/teamOrders/cancel.ts","../src/handlers/teamOrders/create.ts","../src/handlers/teamOrders/extendDeadline.ts","../src/handlers/teamOrders/get.ts","../src/handlers/teamOrders/join.ts","../src/handlers/teamOrders/setDiningLocation.ts","../src/handlers/teamOrders/setDiningTime.ts","../src/handlers/teamOrders/setFulfillmentAt.ts","../src/handlers/teamOrders/setOrderLeadSettled.ts","../src/handlers/teamOrders/submit.ts","../src/handlers/teamOrders/switchFulfillment.ts","../src/handlers/teamOrders/updateDeliveryAddress.ts","../src/handlers/index.ts"],"sourcesContent":["import { defineCommand, runCommand, showUsage } from 'citty'\nimport { consola } from 'consola'\nimport { ZodError } from 'zod'\nimport auth from '@/commands/auth'\nimport { bindHandlerGroup } from '@/commands/bind'\nimport { CLIError } from '@/errors'\nimport { allHandlers, handlerGroups } from '@/handlers'\nimport { ExitCode } from '@/output/exit'\nimport { emitJSON } from '@/output/format'\nimport { exportHandlerSchema } from '@/schema/export'\nimport { VERSION } from '@/version'\n\nconst handlerSubCommands = Object.fromEntries(\n Object.entries(handlerGroups).map(([group, handlers]) => [\n group,\n bindHandlerGroup(group, handlers),\n ])\n)\n\nconst main = defineCommand({\n meta: {\n name: 'order3000',\n version: VERSION,\n description:\n 'Agent-friendly command-line interface for the order3000 platform',\n },\n subCommands: {\n auth,\n ...handlerSubCommands,\n },\n async run({ rawArgs, cmd }) {\n // Note: citty invokes the parent `run` even when a subcommand was\n // dispatched. Only show usage if the user passed no positional tokens.\n const hasSubcommandToken = rawArgs.some((a) => !a.startsWith('-'))\n if (hasSubcommandToken) return\n await showUsage(cmd)\n },\n})\n\nprocess.on('unhandledRejection', (err) => {\n reportError(err)\n process.exit(ExitCode.Unexpected)\n})\n\nconst rawArgs = process.argv.slice(2)\n\n/**\n * Pre-flight: top-level `--version` / `-v`. citty's `runCommand` doesn't\n * special-case version flags; without this, `--version` falls through to\n * the parent's `run` which prints the full help banner. Agents and brew's\n * `test do` assertion both want a single clean line.\n */\nif (\n rawArgs.length === 1 &&\n (rawArgs[0] === '--version' || rawArgs[0] === '-v')\n) {\n process.stdout.write(`${VERSION}\\n`)\n process.exit(ExitCode.Ok)\n}\n\n/**\n * Pre-flight: short-circuit `--schema` so it works on any handler without\n * ever going through citty's argument validation. citty enforces\n * `type: 'positional'` args as required at parse time, which would throw\n * before our `run` body could detect `--schema`. Dispatching here keeps the\n * contract surface (`order3000 orders get --schema`) stable.\n *\n * Strategy: derive the handler dotted name from the non-flag tokens, look\n * it up in the registry, emit its schema bundle, exit.\n */\nif (rawArgs.includes('--schema')) {\n const positional = rawArgs.filter((a) => !a.startsWith('-'))\n const handlerName = positional.slice(0, 2).join('.')\n const handler = allHandlers.find((h) => h.name === handlerName)\n if (handler) {\n emitJSON(exportHandlerSchema(handler))\n process.exit(ExitCode.Ok)\n }\n}\n\nrunCommand(main, { rawArgs })\n .then(() => process.exit(ExitCode.Ok))\n .catch((err: unknown) => {\n reportError(err)\n if (err instanceof CLIError) process.exit(err.exitCode)\n if (err instanceof ZodError) process.exit(ExitCode.UserError)\n process.exit(ExitCode.Unexpected)\n })\n\nfunction reportError(err: unknown): void {\n if (err instanceof CLIError) {\n consola.error(err.message)\n if (err.hint) consola.info(err.hint)\n return\n }\n if (err instanceof ZodError) {\n consola.error('Invalid input:')\n for (const issue of err.issues) {\n const path = issue.path.length ? issue.path.join('.') : '(root)'\n consola.error(` ${path}: ${issue.message}`)\n }\n return\n }\n consola.error(err instanceof Error ? err.message : String(err))\n}\n","import { defineCommand } from 'citty'\nimport list from '@/commands/auth/list'\nimport login from '@/commands/auth/login'\nimport logout from '@/commands/auth/logout'\nimport use from '@/commands/auth/use'\nimport whoami from '@/commands/auth/whoami'\n\nexport default defineCommand({\n meta: {\n name: 'auth',\n description: 'Manage credentials and the active profile',\n },\n subCommands: {\n login,\n logout,\n list,\n use,\n whoami,\n },\n})\n","import { defineCommand } from 'citty'\nimport { consola } from 'consola'\nimport { readProfiles } from '@/config/profile'\n\nexport default defineCommand({\n meta: {\n name: 'list',\n description: 'List configured profiles',\n },\n args: {\n json: {\n type: 'boolean',\n description: 'Emit JSON instead of pretty output',\n default: false,\n },\n },\n async run({ args }) {\n const file = await readProfiles()\n const names = Object.keys(file.profiles)\n\n if (args.json) {\n process.stdout.write(\n `${JSON.stringify(\n {\n defaultProfile: file.defaultProfile,\n profiles: names.map((name) => ({\n name,\n isDefault: name === file.defaultProfile,\n baseUrl: file.profiles[name].baseUrl,\n venueId: file.profiles[name].venueId,\n })),\n },\n null,\n 2\n )}\\n`\n )\n return\n }\n\n if (names.length === 0) {\n consola.info(\n 'No profiles configured. Run `order3000 auth login` to create one.'\n )\n return\n }\n\n for (const name of names) {\n const p = file.profiles[name]\n const marker = name === file.defaultProfile ? '* ' : ' '\n consola.log(\n `${marker}${name} ${p.baseUrl}${p.venueId ? ` venueId=${p.venueId}` : ''}`\n )\n }\n },\n})\n","import { mkdir, readFile, stat, writeFile } from 'node:fs/promises'\nimport { dirname } from 'node:path'\nimport { paths } from '@/config/paths'\nimport {\n type Profile,\n type ProfilesFile,\n profilesFileSchema,\n} from '@/config/schema'\nimport { CLIError } from '@/errors'\n\nexport type { Profile, ProfilesFile }\n\nconst SECURE_FILE_MODE = 0o600\nconst SECURE_DIR_MODE = 0o700\n\nconst EMPTY: ProfilesFile = { profiles: {}, defaultProfile: undefined }\n\nasync function ensureSecureFile(path: string): Promise<void> {\n const info = await stat(path)\n const mode = info.mode & 0o777\n if (mode !== SECURE_FILE_MODE) {\n throw new CLIError(\n `Refusing to read ${path}: file mode is ${mode.toString(8)}, expected 600.`,\n {\n hint: `Run: chmod 600 ${path}`,\n }\n )\n }\n}\n\nexport async function readProfiles(): Promise<ProfilesFile> {\n const path = paths.profilesFile()\n try {\n await ensureSecureFile(path)\n } catch (err) {\n const e = err as NodeJS.ErrnoException\n if (e.code === 'ENOENT') return EMPTY\n throw err\n }\n const raw = await readFile(path, 'utf8')\n const parsed = profilesFileSchema.safeParse(JSON.parse(raw))\n if (!parsed.success) {\n throw new CLIError(\n `Invalid profiles file at ${path}: ${parsed.error.message}`,\n {\n hint: 'Repair the file or run `order3000 auth login` to create a fresh profile.',\n }\n )\n }\n return parsed.data\n}\n\nexport async function writeProfiles(file: ProfilesFile): Promise<void> {\n const path = paths.profilesFile()\n await mkdir(dirname(path), { recursive: true, mode: SECURE_DIR_MODE })\n const validated = profilesFileSchema.parse(file)\n await writeFile(path, JSON.stringify(validated, null, 2), {\n mode: SECURE_FILE_MODE,\n })\n}\n\nexport async function getProfile(name: string): Promise<Profile | undefined> {\n const file = await readProfiles()\n return file.profiles[name]\n}\n\nexport async function getDefaultProfileName(): Promise<string | undefined> {\n const file = await readProfiles()\n return file.defaultProfile\n}\n\nexport async function setProfile(\n name: string,\n profile: Profile\n): Promise<void> {\n const file = await readProfiles()\n const next: ProfilesFile = {\n profiles: { ...file.profiles, [name]: profile },\n defaultProfile: file.defaultProfile ?? name,\n }\n await writeProfiles(next)\n}\n\nexport async function deleteProfile(name: string): Promise<void> {\n const file = await readProfiles()\n if (!file.profiles[name]) return\n const { [name]: _removed, ...rest } = file.profiles\n const nextDefault =\n file.defaultProfile === name ? Object.keys(rest)[0] : file.defaultProfile\n await writeProfiles({ profiles: rest, defaultProfile: nextDefault })\n}\n\nexport async function setDefaultProfile(name: string): Promise<void> {\n const file = await readProfiles()\n if (!file.profiles[name]) {\n throw new CLIError(`Profile \"${name}\" does not exist.`)\n }\n await writeProfiles({ ...file, defaultProfile: name })\n}\n","import { homedir } from 'node:os'\nimport { join } from 'node:path'\n\nconst APP_NAME = 'order3000'\n\nfunction xdgConfigHome(): string {\n return process.env.XDG_CONFIG_HOME || join(homedir(), '.config')\n}\n\nfunction xdgCacheHome(): string {\n return process.env.XDG_CACHE_HOME || join(homedir(), '.cache')\n}\n\nexport const paths = {\n configDir: () => join(xdgConfigHome(), APP_NAME),\n cacheDir: () => join(xdgCacheHome(), APP_NAME),\n profilesFile: () => join(xdgConfigHome(), APP_NAME, 'profiles.json'),\n tokenCacheFile: () => join(xdgCacheHome(), APP_NAME, 'tokens.json'),\n}\n","import { z } from 'zod'\n\nconst HTTPS_OR_LOCALHOST =\n /^https:\\/\\/|^http:\\/\\/(localhost|127\\.0\\.0\\.1)(:\\d+)?(\\/|$)/\n\nconst profileSchema = z\n .object({\n baseUrl: z\n .string()\n .url()\n .refine((url) => HTTPS_OR_LOCALHOST.test(url), {\n message: 'baseUrl must use HTTPS (or http://localhost for development)',\n }),\n clientId: z.string().min(1),\n clientSecret: z.string().min(1).optional(),\n useKeychain: z.boolean().optional(),\n venueId: z.string().optional(),\n venueAccessor: z.string().optional(),\n })\n .refine((data) => Boolean(data.clientSecret) || data.useKeychain === true, {\n message:\n 'Profile must have a clientSecret on disk or useKeychain=true (secret in OS keychain)',\n })\n\nexport const profilesFileSchema = z.object({\n profiles: z.record(z.string().min(1), profileSchema).default({}),\n defaultProfile: z.string().optional(),\n})\n\nexport type Profile = z.infer<typeof profileSchema>\nexport type ProfilesFile = z.infer<typeof profilesFileSchema>\n","export const ExitCode = {\n Ok: 0,\n UserError: 1,\n AuthError: 2,\n NetworkError: 3,\n ServerError: 4,\n Unexpected: 99,\n} as const\n\nexport type ExitCodeValue = (typeof ExitCode)[keyof typeof ExitCode]\n","import { ExitCode, type ExitCodeValue } from '@/output/exit'\n\nexport class CLIError extends Error {\n readonly exitCode: ExitCodeValue\n readonly hint?: string\n\n constructor(\n message: string,\n opts: { exitCode?: ExitCodeValue; hint?: string } = {}\n ) {\n super(message)\n this.name = 'CLIError'\n this.exitCode = opts.exitCode ?? ExitCode.UserError\n this.hint = opts.hint\n }\n}\n\nexport class AuthError extends CLIError {\n constructor(message: string, hint?: string) {\n super(message, { exitCode: ExitCode.AuthError, hint })\n this.name = 'AuthError'\n }\n}\n\nexport class NetworkError extends CLIError {\n constructor(message: string, hint?: string) {\n super(message, { exitCode: ExitCode.NetworkError, hint })\n this.name = 'NetworkError'\n }\n}\n\nconst SECRET_LIKE_KEYS = /(secret|password|token|authorization|apikey|api_key)/i\n\n/**\n * Drop secret-shaped values from objects before they hit logs or stderr.\n * The sole reason this exists: `--verbose`, error formatters, and any\n * accidental `console.log(profile)` must not leak `clientSecret` or JWTs.\n */\nexport function redactSecrets<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map(redactSecrets) as unknown as T\n }\n if (value && typeof value === 'object') {\n const out: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n out[k] = SECRET_LIKE_KEYS.test(k) ? '[redacted]' : redactSecrets(v)\n }\n return out as T\n }\n return value\n}\n","import { defineCommand } from 'citty'\nimport { consola } from 'consola'\nimport { exchangeToken } from '@/auth/exchange'\nimport { keychain } from '@/auth/keychain'\nimport { writeCachedToken } from '@/auth/token-cache'\nimport { setDefaultProfile, setProfile } from '@/config/profile'\nimport { CLIError } from '@/errors'\nimport { isTTY } from '@/output/tty'\n\nexport default defineCommand({\n meta: {\n name: 'login',\n description:\n 'Save credentials for an order3000 robot account into a named profile',\n },\n args: {\n profile: {\n type: 'string',\n description: 'Profile name to create or update',\n default: 'default',\n },\n 'client-id': { type: 'string', description: 'Robot account client ID' },\n 'client-secret': {\n type: 'string',\n description: 'Robot account client secret',\n },\n 'base-url': {\n type: 'string',\n description: 'API base URL',\n default: 'https://order3000.com/api',\n },\n 'venue-id': {\n type: 'string',\n description: 'Default venue ID for this profile (optional)',\n },\n 'set-default': {\n type: 'boolean',\n description: 'Set this profile as the default after login',\n default: false,\n },\n 'skip-verify': {\n type: 'boolean',\n description: 'Skip the credential verification round-trip',\n default: false,\n },\n keychain: {\n type: 'boolean',\n description:\n 'Store the client secret in the OS keychain instead of profiles.json',\n default: false,\n },\n },\n async run({ args }) {\n const profileName = args.profile\n let clientId = args['client-id']\n let clientSecret = args['client-secret']\n const baseUrl = args['base-url']\n const venueId = args['venue-id']\n\n if (!clientId || !clientSecret) {\n if (!isTTY()) {\n throw new CLIError(\n 'Non-interactive run requires --client-id and --client-secret (or env vars).'\n )\n }\n if (!clientId) {\n clientId = (await consola.prompt('Client ID:', {\n type: 'text',\n })) as string\n }\n if (!clientSecret) {\n clientSecret = (await consola.prompt('Client secret:', {\n type: 'text',\n })) as string\n }\n }\n\n if (!clientId || !clientSecret) {\n throw new CLIError('Client ID and client secret are required.')\n }\n\n const useKeychain = Boolean(args.keychain)\n if (useKeychain && !(await keychain.isAvailable())) {\n throw new CLIError(\n 'Cannot use --keychain: OS keychain backend is not available in this build.',\n {\n hint:\n '--keychain requires the npm install (`pnpm i -g @order3000/cli`); ' +\n 'the Homebrew binary does not bundle native modules. ' +\n 'Linux users also need libsecret. Otherwise, omit --keychain.',\n }\n )\n }\n\n // We need the full credentials in-memory for the verification call,\n // but only the non-secret subset gets persisted to disk when --keychain is set.\n const fullCreds = {\n baseUrl,\n clientId,\n clientSecret,\n venueId: venueId || undefined,\n }\n\n if (!args['skip-verify']) {\n consola.start(`Verifying credentials against ${baseUrl}…`)\n const fresh = await exchangeToken(fullCreds)\n const expiresAt = Date.now() + fresh.expiresIn * 1000\n\n if (useKeychain) {\n await keychain.setClientSecret(profileName, clientSecret)\n await setProfile(profileName, {\n baseUrl,\n clientId,\n useKeychain: true,\n venueId: venueId || undefined,\n })\n } else {\n await setProfile(profileName, fullCreds)\n }\n\n await writeCachedToken(profileName, clientId, baseUrl, {\n accessToken: fresh.accessToken,\n expiresAt,\n })\n consola.success(\n `Profile \"${profileName}\" saved${useKeychain ? ' (secret in OS keychain)' : ''} and token cached.`\n )\n } else {\n if (useKeychain) {\n await keychain.setClientSecret(profileName, clientSecret)\n await setProfile(profileName, {\n baseUrl,\n clientId,\n useKeychain: true,\n venueId: venueId || undefined,\n })\n } else {\n await setProfile(profileName, fullCreds)\n }\n consola.success(\n `Profile \"${profileName}\" saved${useKeychain ? ' (secret in OS keychain)' : ''} (verification skipped).`\n )\n }\n\n if (args['set-default']) {\n await setDefaultProfile(profileName)\n consola.info(`\"${profileName}\" is now the default profile.`)\n }\n },\n})\n","import type { ResolvedCredentials } from '@/auth/credentials'\nimport { AuthError, NetworkError } from '@/errors'\n\ninterface TokenResponse {\n accessToken: string\n expiresIn: number\n tokenType: 'Bearer'\n}\n\n/**\n * Low-level POST to /auth/token. Used by `auth login` (verification) and by\n * client-factory's getActiveToken (cache miss). Kept separate from the SDK's\n * TokenManager because the CLI needs a disk-persisted cache that survives\n * process boundaries.\n */\nexport async function exchangeToken(\n creds: Pick<ResolvedCredentials, 'baseUrl' | 'clientId' | 'clientSecret'>\n): Promise<TokenResponse> {\n const url = `${creds.baseUrl}/auth/token`\n let res: Response\n try {\n res = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n clientId: creds.clientId,\n clientSecret: creds.clientSecret,\n }),\n signal: AbortSignal.timeout(30_000),\n })\n } catch (err) {\n throw new NetworkError(`Failed to reach ${url}: ${(err as Error).message}`)\n }\n\n if (!res.ok) {\n const body = await res.text().catch(() => '')\n throw new AuthError(\n `Token exchange failed: HTTP ${res.status} ${res.statusText}${\n body ? ` — ${body.slice(0, 200)}` : ''\n }`,\n 'Verify clientId/clientSecret and that the robot account is active.'\n )\n }\n\n return (await res.json()) as TokenResponse\n}\n","import { CLIError } from '@/errors'\n\nconst SERVICE = 'order3000-cli'\nconst SECRET_PREFIX = 'clientSecret:'\n\n/**\n * Why dynamic import: @napi-rs/keyring loads a platform-specific .node binary\n * (Keychain on macOS, libsecret on Linux, Credential Manager on Windows).\n * If the binary isn't available (e.g. headless Linux without libsecret), we\n * want to fail with a clear hint rather than crash on first import.\n */\ntype KeyringModule = typeof import('@napi-rs/keyring')\n\nlet cached: KeyringModule | { error: Error } | undefined\n\nasync function load(): Promise<KeyringModule> {\n if (cached && !('error' in cached)) return cached\n if (cached && 'error' in cached) throw cached.error\n try {\n cached = await import('@napi-rs/keyring')\n return cached\n } catch (err) {\n cached = { error: err as Error }\n throw new CLIError(`OS keychain unavailable: ${(err as Error).message}`, {\n hint:\n '--keychain requires the npm install (`pnpm i -g @order3000/cli`); ' +\n 'the Homebrew binary does not bundle native modules. ' +\n 'Linux users also need libsecret (`apt install libsecret-1-dev gnome-keyring`). ' +\n 'Otherwise, omit --keychain to use file-based storage.',\n })\n }\n}\n\nfunction entryAccount(profile: string, kind: 'clientSecret'): string {\n return `${SECRET_PREFIX === `${kind}:` ? '' : ''}${profile}`\n}\n\nexport const keychain = {\n /**\n * Best-effort capability check. Returns false if the native binding is not\n * loadable on this platform — callers can decide to degrade gracefully.\n */\n async isAvailable(): Promise<boolean> {\n try {\n await load()\n return true\n } catch {\n return false\n }\n },\n\n async setClientSecret(profile: string, secret: string): Promise<void> {\n const mod = await load()\n new mod.Entry(SERVICE, entryAccount(profile, 'clientSecret')).setPassword(\n secret\n )\n },\n\n async getClientSecret(profile: string): Promise<string | undefined> {\n const mod = await load()\n try {\n const value = new mod.Entry(\n SERVICE,\n entryAccount(profile, 'clientSecret')\n ).getPassword()\n return value ?? undefined\n } catch {\n // NoEntry on some platforms throws rather than returning null\n return undefined\n }\n },\n\n async deleteClientSecret(profile: string): Promise<boolean> {\n const mod = await load()\n try {\n return new mod.Entry(\n SERVICE,\n entryAccount(profile, 'clientSecret')\n ).deletePassword()\n } catch {\n return false\n }\n },\n}\n","import { createHash } from 'node:crypto'\nimport { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises'\nimport { dirname } from 'node:path'\nimport { z } from 'zod'\nimport { cachedTokenSchema, tokenCacheFileSchema } from '@/auth/schema'\nimport { paths } from '@/config/paths'\n\nconst SECURE_FILE_MODE = 0o600\nconst SECURE_DIR_MODE = 0o700\n\ntype CachedToken = z.infer<typeof cachedTokenSchema>\ntype TokenCacheFile = z.infer<typeof tokenCacheFileSchema>\n\nconst EMPTY: TokenCacheFile = { tokens: {} }\n\n/**\n * Cache keys are hashed (clientId + baseUrl) so switching profiles never\n * exposes a previous profile's token to the new one.\n */\nfunction cacheKey(\n profileName: string,\n clientId: string,\n baseUrl: string\n): string {\n const fingerprint = createHash('sha256')\n .update(`${clientId}::${baseUrl}`)\n .digest('hex')\n .slice(0, 16)\n return `${profileName}.${fingerprint}`\n}\n\nasync function readFileIfExists(): Promise<TokenCacheFile> {\n const path = paths.tokenCacheFile()\n try {\n await stat(path)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return EMPTY\n throw err\n }\n const raw = await readFile(path, 'utf8')\n const parsed = tokenCacheFileSchema.safeParse(JSON.parse(raw))\n return parsed.success ? parsed.data : EMPTY\n}\n\nasync function writeFileSecure(file: TokenCacheFile): Promise<void> {\n const path = paths.tokenCacheFile()\n await mkdir(dirname(path), { recursive: true, mode: SECURE_DIR_MODE })\n await writeFile(path, JSON.stringify(file, null, 2), {\n mode: SECURE_FILE_MODE,\n })\n}\n\nexport async function readCachedToken(\n profileName: string,\n clientId: string,\n baseUrl: string\n): Promise<CachedToken | undefined> {\n const file = await readFileIfExists()\n return file.tokens[cacheKey(profileName, clientId, baseUrl)]\n}\n\nexport async function writeCachedToken(\n profileName: string,\n clientId: string,\n baseUrl: string,\n token: CachedToken\n): Promise<void> {\n const file = await readFileIfExists()\n await writeFileSecure({\n tokens: {\n ...file.tokens,\n [cacheKey(profileName, clientId, baseUrl)]: token,\n },\n })\n}\n\nexport async function clearCachedToken(\n profileName: string,\n clientId: string,\n baseUrl: string\n): Promise<void> {\n const file = await readFileIfExists()\n const key = cacheKey(profileName, clientId, baseUrl)\n if (!file.tokens[key]) return\n const { [key]: _removed, ...rest } = file.tokens\n await writeFileSecure({ tokens: rest })\n}\n\nexport async function clearAllCachedTokens(): Promise<void> {\n try {\n await rm(paths.tokenCacheFile())\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') throw err\n }\n}\n","import { z } from 'zod'\n\nexport const cachedTokenSchema = z.object({\n accessToken: z.string(),\n expiresAt: z.number().int().positive(),\n})\n\nexport const tokenCacheFileSchema = z.object({\n tokens: z.record(z.string().min(1), cachedTokenSchema).default({}),\n})\n","export const isTTY = (): boolean => Boolean(process.stdout.isTTY)\n","import { defineCommand } from 'citty'\nimport { consola } from 'consola'\nimport { keychain } from '@/auth/keychain'\nimport { clearAllCachedTokens, clearCachedToken } from '@/auth/token-cache'\nimport { deleteProfile, getProfile } from '@/config/profile'\nimport { CLIError } from '@/errors'\n\nexport default defineCommand({\n meta: {\n name: 'logout',\n description:\n 'Remove a profile and its cached token (default: keep the profile, drop the token)',\n },\n args: {\n profile: {\n type: 'string',\n description: 'Profile name to log out from',\n required: true,\n },\n 'remove-profile': {\n type: 'boolean',\n description:\n 'Also remove the profile from ~/.config/order3000/profiles.json',\n default: false,\n },\n all: {\n type: 'boolean',\n description: 'Drop ALL cached tokens (does not remove profiles)',\n default: false,\n },\n },\n async run({ args }) {\n if (args.all) {\n await clearAllCachedTokens()\n consola.success('Cleared all cached tokens.')\n return\n }\n\n const profile = await getProfile(args.profile)\n if (!profile) {\n throw new CLIError(`Profile \"${args.profile}\" does not exist.`)\n }\n\n await clearCachedToken(args.profile, profile.clientId, profile.baseUrl)\n consola.success(`Cleared cached token for \"${args.profile}\".`)\n\n if (args['remove-profile']) {\n if (profile.useKeychain) {\n const removed = await keychain.deleteClientSecret(args.profile)\n if (removed)\n consola.success(\n `Removed secret from OS keychain for \"${args.profile}\".`\n )\n }\n await deleteProfile(args.profile)\n consola.success(`Removed profile \"${args.profile}\" from config.`)\n }\n },\n})\n","import { defineCommand } from 'citty'\nimport { consola } from 'consola'\nimport { setDefaultProfile } from '@/config/profile'\n\nexport default defineCommand({\n meta: {\n name: 'use',\n description: 'Set the default profile for subsequent commands',\n },\n args: {\n profile: {\n type: 'positional',\n description: 'Profile name',\n required: true,\n },\n },\n async run({ args }) {\n await setDefaultProfile(args.profile)\n consola.success(`Default profile set to \"${args.profile}\".`)\n },\n})\n","import { defineCommand } from 'citty'\nimport { consola } from 'consola'\nimport { getActiveToken } from '@/auth/client-factory'\nimport {\n credentialArgs,\n flagsFromCittyArgs,\n resolveCredentials,\n} from '@/auth/credentials'\nimport { redactSecrets } from '@/errors'\n\nexport default defineCommand({\n meta: {\n name: 'whoami',\n description:\n 'Show the active profile and the robot account claims encoded in its JWT',\n },\n args: {\n ...credentialArgs,\n json: {\n type: 'boolean',\n description: 'Emit JSON instead of pretty output',\n default: false,\n },\n },\n async run({ args }) {\n const creds = await resolveCredentials(\n flagsFromCittyArgs(args as Record<string, unknown>)\n )\n const { claims, expiresAt } = await getActiveToken(creds.source, creds)\n\n const out = {\n profile: creds.source,\n baseUrl: creds.baseUrl,\n robotAccountId: claims.sub,\n venues: claims.venues ?? [],\n permissionGroups: claims.permissionGroups ?? [],\n tokenExpiresAt: new Date(expiresAt).toISOString(),\n }\n\n if (args.json) {\n process.stdout.write(`${JSON.stringify(out, null, 2)}\\n`)\n return\n }\n\n const safe = redactSecrets(out)\n consola.box({\n title: `Active profile: ${out.profile}`,\n message: Object.entries(safe)\n .filter(([k]) => k !== 'profile')\n .map(\n ([k, v]) =>\n `${k.padEnd(20)} ${Array.isArray(v) ? v.join(', ') || '(none)' : v}`\n )\n .join('\\n'),\n })\n },\n})\n","import { Order3000Client } from 'order3000'\nimport type { ResolvedCredentials } from '@/auth/credentials'\nimport { exchangeToken } from '@/auth/exchange'\nimport { readCachedToken, writeCachedToken } from '@/auth/token-cache'\nimport { AuthError } from '@/errors'\n\nconst FIVE_MIN_MS = 300_000\n\nexport interface JWTClaims {\n sub?: string\n venues?: string[]\n permissionGroups?: string[]\n exp?: number\n iat?: number\n}\n\nexport function decodeJWT(jwt: string): JWTClaims {\n const [, payload] = jwt.split('.')\n if (!payload) throw new AuthError('Malformed JWT: missing payload segment.')\n try {\n return JSON.parse(\n Buffer.from(payload, 'base64url').toString('utf8')\n ) as JWTClaims\n } catch (err) {\n throw new AuthError(\n `Failed to decode JWT payload: ${(err as Error).message}`\n )\n }\n}\n\n/**\n * Returns a valid (cached or freshly-issued) bearer token for the active profile.\n * Cache hit when token is at least 5 minutes from expiry, mirroring the SDK's behaviour.\n */\nexport async function getActiveToken(\n profileName: string,\n creds: ResolvedCredentials\n): Promise<{ accessToken: string; expiresAt: number; claims: JWTClaims }> {\n const cached = await readCachedToken(\n profileName,\n creds.clientId,\n creds.baseUrl\n )\n if (cached && cached.expiresAt - Date.now() > FIVE_MIN_MS) {\n return {\n accessToken: cached.accessToken,\n expiresAt: cached.expiresAt,\n claims: decodeJWT(cached.accessToken),\n }\n }\n\n const fresh = await exchangeToken(creds)\n const expiresAt = Date.now() + fresh.expiresIn * 1000\n await writeCachedToken(profileName, creds.clientId, creds.baseUrl, {\n accessToken: fresh.accessToken,\n expiresAt,\n })\n\n return {\n accessToken: fresh.accessToken,\n expiresAt,\n claims: decodeJWT(fresh.accessToken),\n }\n}\n\n/**\n * Build a configured Order3000 SDK client using the resolved credentials.\n * The SDK's own TokenManager will refresh as needed within the process; the\n * CLI's disk cache (above) is what survives across CLI invocations.\n */\nexport function buildSDKClient(creds: ResolvedCredentials): Order3000Client {\n return new Order3000Client({\n clientId: creds.clientId,\n clientSecret: creds.clientSecret,\n baseUrl: creds.baseUrl,\n venueId: creds.venueId,\n })\n}\n","import { keychain } from '@/auth/keychain'\nimport {\n getDefaultProfileName,\n getProfile,\n type Profile,\n} from '@/config/profile'\nimport { CLIError } from '@/errors'\n\nconst DEFAULT_BASE_URL = 'https://order3000.com/api'\n\nexport interface ResolvedCredentials {\n baseUrl: string\n clientId: string\n /** Always present after resolution — fetched from flag/env/config/keychain. */\n clientSecret: string\n venueId?: string\n venueAccessor?: string\n /** The profile name actually selected (or \"_env\" / \"_flags\" when bypassing config). */\n source: string\n}\n\nexport interface CredentialFlags {\n profile?: string\n clientId?: string\n clientSecret?: string\n baseUrl?: string\n venueId?: string\n venueAccessor?: string\n}\n\nconst ENV = {\n profile: 'ORDER3000_PROFILE',\n clientId: 'ORDER3000_CLIENT_ID',\n clientSecret: 'ORDER3000_CLIENT_SECRET',\n baseUrl: 'ORDER3000_BASE_URL',\n venueId: 'ORDER3000_VENUE_ID',\n venueAccessor: 'ORDER3000_VENUE_ACCESSOR',\n}\n\n/**\n * Resolution order (highest priority first):\n * 1. CLI flags\n * 2. Environment variables\n * 3. Selected profile from `~/.config/order3000/profiles.json`\n *\n * Profile selection: `--profile` flag → ORDER3000_PROFILE env → default profile\n */\nexport async function resolveCredentials(\n flags: CredentialFlags = {}\n): Promise<ResolvedCredentials> {\n const fromFlags: Partial<Profile> = {\n clientId: flags.clientId,\n clientSecret: flags.clientSecret,\n baseUrl: flags.baseUrl,\n venueId: flags.venueId,\n venueAccessor: flags.venueAccessor,\n }\n const fromEnv: Partial<Profile> = {\n clientId: process.env[ENV.clientId],\n clientSecret: process.env[ENV.clientSecret],\n baseUrl: process.env[ENV.baseUrl],\n venueId: process.env[ENV.venueId],\n venueAccessor: process.env[ENV.venueAccessor],\n }\n\n const profileName =\n flags.profile ?? process.env[ENV.profile] ?? (await getDefaultProfileName())\n const fromProfile = profileName ? await getProfile(profileName) : undefined\n\n let clientSecret =\n fromFlags.clientSecret ?? fromEnv.clientSecret ?? fromProfile?.clientSecret\n\n // Keychain is the lowest-priority source — only consulted when the profile\n // explicitly opted in via `useKeychain` AND no higher-priority layer supplied a secret.\n if (!clientSecret && profileName && fromProfile?.useKeychain) {\n clientSecret = await keychain.getClientSecret(profileName)\n if (!clientSecret) {\n throw new CLIError(\n `Profile \"${profileName}\" is configured to use the OS keychain, but no secret was found there.`,\n {\n hint:\n 'Re-run `order3000 auth login --profile ' +\n profileName +\n ' --keychain` to store it.',\n }\n )\n }\n }\n\n const merged: Partial<Profile> = {\n baseUrl:\n fromFlags.baseUrl ??\n fromEnv.baseUrl ??\n fromProfile?.baseUrl ??\n DEFAULT_BASE_URL,\n clientId: fromFlags.clientId ?? fromEnv.clientId ?? fromProfile?.clientId,\n clientSecret,\n venueId: fromFlags.venueId ?? fromEnv.venueId ?? fromProfile?.venueId,\n venueAccessor:\n fromFlags.venueAccessor ??\n fromEnv.venueAccessor ??\n fromProfile?.venueAccessor,\n }\n\n if (!merged.clientId || !merged.clientSecret) {\n throw new CLIError(\n 'Missing credentials. Provide via flags (--client-id/--client-secret), ' +\n `env vars (${ENV.clientId}/${ENV.clientSecret}), or run \\`order3000 auth login\\`.`\n )\n }\n\n return {\n baseUrl: merged.baseUrl as string,\n clientId: merged.clientId,\n clientSecret: merged.clientSecret,\n venueId: merged.venueId,\n venueAccessor: merged.venueAccessor,\n source: profileName ?? (process.env[ENV.clientId] ? '_env' : '_flags'),\n }\n}\n\n/**\n * Common citty arg shape for any command that needs credentials. Spread into a command's `args`.\n */\nexport const credentialArgs = {\n profile: {\n type: 'string',\n description: 'Profile name from ~/.config/order3000/profiles.json',\n },\n 'client-id': {\n type: 'string',\n description: 'Robot account client ID (overrides env and profile)',\n },\n 'client-secret': {\n type: 'string',\n description: 'Robot account client secret (overrides env and profile)',\n },\n 'base-url': {\n type: 'string',\n description: 'API base URL (e.g. https://order3000.com/api)',\n },\n 'venue-id': {\n type: 'string',\n description: 'Venue ID to scope requests to',\n },\n} as const\n\nexport function flagsFromCittyArgs(\n args: Record<string, unknown>\n): CredentialFlags {\n const get = (k: string) =>\n typeof args[k] === 'string' ? (args[k] as string) : undefined\n return {\n profile: get('profile'),\n clientId: get('client-id'),\n clientSecret: get('client-secret'),\n baseUrl: get('base-url'),\n venueId: get('venue-id'),\n }\n}\n","import { defineCommand, showUsage } from 'citty'\nimport { consola } from 'consola'\nimport { buildSDKClient } from '@/auth/client-factory'\nimport {\n credentialArgs,\n flagsFromCittyArgs,\n resolveCredentials,\n} from '@/auth/credentials'\nimport { CLIError } from '@/errors'\nimport type { AnyHandler, HandlerContext } from '@/handlers/types'\nimport { emitJSON, emitJSONL, outputArgs, resolveFormat } from '@/output/format'\nimport { isTTY } from '@/output/tty'\nimport { exportHandlerSchema } from '@/schema/export'\n\n/**\n * Convert a handler into a citty command. This is the single bridge between\n * the framework-agnostic handler registry and the CLI surface — every CLI\n * command goes through here, and the equivalent MCP server (Phase 7+) will\n * use a parallel bridge that consumes the same handler registry.\n *\n * Responsibilities (in order):\n * 1. Honour --schema by short-circuiting and emitting the JSON Schema bundle\n * 2. Resolve credentials → build SDK client → assemble HandlerContext\n * 3. Parse + validate input through the handler's inputSchema\n * 4. Gate mutating handlers in non-TTY mode behind --yes\n * 5. Run the handler\n * 6. Validate the output against outputSchema (defends against drift)\n * 7. Format output per resolved format (pretty | json | jsonl)\n */\nexport function bindHandlerCommand(handler: AnyHandler) {\n const leafName = handler.name.split('.').slice(-1)[0]\n\n return defineCommand({\n meta: {\n name: leafName,\n description: handler.description,\n },\n args: {\n ...handler.cliArgs,\n ...credentialArgs,\n ...outputArgs,\n },\n async run({ args, cmd, rawArgs }) {\n const argsRecord = args as Record<string, unknown>\n\n // citty's runCommand doesn't auto-handle --help / -h on leaf commands;\n // intercept it here so users can introspect each command's flags.\n if (rawArgs.includes('--help') || rawArgs.includes('-h')) {\n await showUsage(cmd)\n return\n }\n\n if (argsRecord.schema === true) {\n emitJSON(exportHandlerSchema(handler))\n return\n }\n\n // Validate input BEFORE the mutation gate so users see what's missing\n // rather than \"needs --yes\" when they meant to discover the contract.\n const rawInput = handler.parseInput(argsRecord)\n const input = handler.inputSchema.parse(rawInput)\n\n if (handler.mutating && !isTTY() && argsRecord.yes !== true) {\n throw new CLIError(\n `Refusing to run mutating command \"${handler.name}\" without --yes in a non-TTY context.`,\n {\n hint: 'Pass --yes to confirm, or run interactively from a terminal.',\n }\n )\n }\n\n const ctx = await buildContext(handler, argsRecord)\n const output = await handler.run(input, ctx)\n const validated = handler.outputSchema.parse(output)\n\n const fmt = resolveFormat(argsRecord)\n if (fmt === 'json') {\n emitJSON(validated)\n } else if (fmt === 'jsonl') {\n emitJSONL(Array.isArray(validated) ? validated : [validated])\n } else {\n // Pretty mode v1: JSON with a header. Per-handler pretty renderers\n // can be added in Phase 4 for resources whose default representation\n // benefits from a tabular view.\n consola.box({\n title: handler.name,\n message: JSON.stringify(validated, null, 2),\n })\n }\n },\n })\n}\n\nasync function buildContext(\n handler: AnyHandler,\n argsRecord: Record<string, unknown>\n): Promise<HandlerContext> {\n if (handler.requiresCredentials === false) {\n return { client: undefined as never, venueId: undefined, logger: consola }\n }\n const creds = await resolveCredentials(flagsFromCittyArgs(argsRecord))\n return {\n client: buildSDKClient(creds),\n venueId: creds.venueId,\n logger: consola,\n }\n}\n\n/**\n * Group a list of handlers under a single citty subcommand. The group name\n * is taken from the first dotted segment of the handlers' names, which all\n * must share. Example: handlers `orders.list`, `orders.get`, `orders.create`\n * → `order3000 orders <list|get|create>`.\n */\nexport function bindHandlerGroup(\n groupName: string,\n handlers: ReadonlyArray<AnyHandler>\n) {\n const subCommands: Record<string, ReturnType<typeof bindHandlerCommand>> = {}\n for (const handler of handlers) {\n const [head, ...tail] = handler.name.split('.')\n if (head !== groupName || tail.length !== 1) {\n throw new Error(\n `Handler \"${handler.name}\" does not match group \"${groupName}\" — expected name \"${groupName}.<leaf>\".`\n )\n }\n subCommands[tail[0]] = bindHandlerCommand(handler)\n }\n return defineCommand({\n meta: { name: groupName, description: `${groupName} commands` },\n subCommands,\n async run({ rawArgs, cmd }) {\n // Same workaround as the root command — citty calls this even when a\n // leaf subcommand was dispatched. Only show usage when no subcommand token was given.\n const hasSubcommandToken = rawArgs.some((a) => !a.startsWith('-'))\n if (hasSubcommandToken) return\n await showUsage(cmd)\n },\n })\n}\n","import { isTTY } from '@/output/tty'\n\nexport type OutputFormat = 'json' | 'pretty' | 'jsonl'\n\n/**\n * Resolve the effective output format from flags + TTY detection.\n *\n * Default: pretty when stdout is a TTY, json otherwise. This is the\n * \"agent-friendly\" default — piping to a script or running under a\n * non-TTY shell automatically produces machine-readable output without\n * any flag.\n */\nexport function resolveFormat(args: Record<string, unknown>): OutputFormat {\n if (args.json === true) return 'json'\n if (typeof args.format === 'string') {\n const f = args.format.toLowerCase()\n if (f === 'json' || f === 'pretty' || f === 'jsonl') return f\n throw new Error(\n `Unknown --format value \"${args.format}\" (expected json | pretty | jsonl)`\n )\n }\n return isTTY() ? 'pretty' : 'json'\n}\n\nexport function emitJSON(value: unknown): void {\n process.stdout.write(`${JSON.stringify(value, null, 2)}\\n`)\n}\n\nexport function emitJSONL(values: ReadonlyArray<unknown>): void {\n for (const value of values) {\n process.stdout.write(`${JSON.stringify(value)}\\n`)\n }\n}\n\n/**\n * Universal output args every handler-derived command shares.\n * Keep this tight — anything domain-specific belongs on the handler itself.\n */\nexport const outputArgs = {\n json: {\n type: 'boolean',\n description: 'Emit JSON (overrides --format and TTY detection)',\n default: false,\n },\n format: {\n type: 'string',\n description: 'Output format: pretty | json | jsonl',\n },\n schema: {\n type: 'boolean',\n description:\n 'Print the JSON Schema for this command (input + output) and exit',\n default: false,\n },\n yes: {\n type: 'boolean',\n description:\n 'Confirm any destructive prompt (required for mutating commands in non-TTY mode)',\n default: false,\n alias: 'y',\n },\n} as const\n","import { zodToJsonSchema } from 'zod-to-json-schema'\nimport type { AnyHandler } from '@/handlers/types'\n\nexport interface HandlerSchemaBundle {\n name: string\n description: string\n contractVersion: string\n mutating: boolean\n input: ReturnType<typeof zodToJsonSchema>\n output: ReturnType<typeof zodToJsonSchema>\n}\n\n/**\n * Convert a handler's Zod schemas to JSON Schema. The shape returned here\n * is what the CLI emits via `--schema`, what we commit under `schemas/v1/`\n * for snapshot enforcement, and what the (future) MCP server will translate\n * into `inputSchema` for tool definitions.\n */\nexport function exportHandlerSchema(handler: AnyHandler): HandlerSchemaBundle {\n return {\n name: handler.name,\n description: handler.description,\n contractVersion: handler.contractVersion,\n mutating: Boolean(handler.mutating),\n input: zodToJsonSchema(handler.inputSchema, {\n name: `${handler.name}.input`,\n $refStrategy: 'none',\n }),\n output: zodToJsonSchema(handler.outputSchema, {\n name: `${handler.name}.output`,\n $refStrategy: 'none',\n }),\n }\n}\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nconst dateOnly = z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, 'Expected YYYY-MM-DD')\n\nexport const areasGetAvailability = defineHandler({\n name: 'areas.getAvailability',\n description:\n 'List occupied date/time windows for an area between `from` and `to`.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({\n accessor: z.string().min(1),\n from: dateOnly.optional(),\n to: dateOnly.optional(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n accessor: { type: 'positional', description: 'Area id or accessor' },\n from: {\n type: 'string',\n description: 'Window start (YYYY-MM-DD), defaults to today',\n },\n to: {\n type: 'string',\n description: 'Window end (YYYY-MM-DD), defaults to today + 90d',\n },\n },\n parseInput: (args) => ({\n accessor: maybeString(args.accessor) ?? '',\n from: maybeString(args.from),\n to: maybeString(args.to),\n }),\n async run(input, ctx) {\n return ctx.client.areas.getAvailability(input.accessor, {\n from: input.from,\n to: input.to,\n })\n },\n})\n","import { z } from 'zod'\n\n/**\n * Pass-through object schema. Validates that the value is an object but\n * preserves any keys we haven't explicitly listed. Used for handler output\n * schemas where mirroring the SDK's full nested type would duplicate the\n * server's source of truth and rot fast.\n *\n * Rule of thumb: list the top-level keys agents care about contractually\n * (id, status, created_at, …) using `.extend({...})`, and let the rest\n * pass through.\n */\nexport const passthroughObject = z.object({}).passthrough()\n\n/** Array of pass-through objects — the typical \"list\" output. */\nexport const passthroughArray = z.array(passthroughObject)\n\n/** Generic UUID/ID input — accepts any non-empty string. */\nexport const idSchema = z.string().min(1)\n\n/** ISO 8601 date-time string. */\nexport const isoDateTime = z.string().datetime({ offset: true })\n\n/** Helper to build \"object with these required top-level keys, pass everything else through\". */\nexport function objectWithKnownKeys<T extends z.ZodRawShape>(shape: T) {\n return z.object(shape).passthrough()\n}\n\n/** Helper to build \"array of object with these required top-level keys\". */\nexport function arrayOfObjectsWithKnownKeys<T extends z.ZodRawShape>(shape: T) {\n return z.array(objectWithKnownKeys(shape))\n}\n\n/**\n * Parse a string-shaped citty arg, with a Zod schema for shape enforcement.\n * Returns undefined for missing optional values.\n */\nexport function maybeString(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nexport function maybeBool(value: unknown): boolean | undefined {\n return typeof value === 'boolean' ? value : undefined\n}\n\nexport function maybeNumber(value: unknown): number | undefined {\n if (typeof value === 'number') return value\n if (typeof value === 'string' && value.length > 0) {\n const n = Number(value)\n return Number.isFinite(n) ? n : undefined\n }\n return undefined\n}\n","import type { ArgsDef } from 'citty'\nimport type { ConsolaInstance } from 'consola'\nimport type { Order3000Client } from 'order3000'\nimport type { z } from 'zod'\nimport type { ContractVersion } from '@/schema/version'\n\nexport interface HandlerContext {\n client: Order3000Client\n venueId?: string\n logger: ConsolaInstance\n}\n\n/**\n * A handler is the CLI's unit of work. CLI commands and MCP tools both\n * bind to handlers — never to direct SDK calls — so behaviour stays\n * identical across surfaces.\n *\n * Naming: dotted, lower-camel-case segments mirroring the SDK structure\n * (e.g. `orders.list`, `teamOrders.create`). The leading segment becomes\n * the citty subcommand group, the trailing segment becomes the leaf\n * command.\n *\n * `cliArgs` describes citty-specific arg parsing (positional vs flag,\n * shorthands, etc.); `inputSchema` is the strict semantic contract used\n * for runtime validation, JSON Schema export, and MCP tool definitions.\n * `parseInput` bridges them — taking citty's parsed args object and\n * returning the typed input.\n */\nexport interface Handler<TInput, TOutput> {\n name: `${string}.${string}`\n description: string\n contractVersion: ContractVersion\n inputSchema: z.ZodType<TInput>\n outputSchema: z.ZodType<TOutput>\n cliArgs: ArgsDef\n parseInput: (args: Record<string, unknown>) => TInput\n /** Whether this handler reads-only or mutates state — mutations require `--yes` in non-TTY mode. */\n mutating?: boolean\n /**\n * Defaults to true. Set false for handlers that don't need a configured\n * SDK client (e.g. local utilities). When false, `ctx.client` is a no-op\n * stub and credential resolution is skipped entirely.\n */\n requiresCredentials?: boolean\n /**\n * Return type is `unknown` rather than `TOutput` because most SDK methods\n * return strict TypeScript interfaces that don't structurally satisfy\n * Zod's `passthrough` output shape. The bind adapter calls\n * `outputSchema.parse(...)` at runtime — that's the actual contract gate.\n * Static typing for handler authors comes from `inputSchema` + IDE\n * inference within the body.\n */\n run(input: TInput, ctx: HandlerContext): Promise<unknown>\n}\n\nexport type AnyHandler = Handler<unknown, unknown>\n\n/**\n * Helper to define a handler with full type inference. Prefer this over\n * declaring a `Handler<I, O>` literal directly — the helper preserves\n * generics so `parseInput`'s return type is checked against `inputSchema`.\n */\nexport function defineHandler<TInput, TOutput>(\n handler: Handler<TInput, TOutput>\n): Handler<TInput, TOutput> {\n return handler\n}\n","/**\n * Contract version for handler input/output JSON Schemas.\n *\n * The CLI's `--json` output and the (future) MCP tool definitions both\n * derive from per-handler Zod schemas. Any breaking change to a handler's\n * input shape, output shape, or naming must bump this version (and the\n * package's major). Additive changes — new optional input fields, new\n * output fields — stay within the same version.\n *\n * Schemas are emitted under `schemas/v1/<handler>.{input,output}.json`\n * at build time and committed to the repo. The build fails if regenerated\n * schemas differ from the committed ones, forcing changes to be deliberate.\n */\nexport const CONTRACT_VERSION = 'v1' as const\nexport type ContractVersion = typeof CONTRACT_VERSION\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const areasGetByAccessor = defineHandler({\n name: 'areas.getByAccessor',\n description: 'Fetch a single area by id or accessor.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({\n accessor: z.string().min(1),\n expand: z.array(z.literal('assets')).optional(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n accessor: { type: 'positional', description: 'Area id or accessor' },\n expand: {\n type: 'string',\n description: \"Comma-separated expand sections (only 'assets' for now)\",\n },\n },\n parseInput: (args) => {\n const expandRaw = maybeString(args.expand)\n return {\n accessor: maybeString(args.accessor) ?? '',\n expand: expandRaw\n ? (expandRaw\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s === 'assets') as Array<'assets'>)\n : undefined,\n }\n },\n async run(input, ctx) {\n return ctx.client.areas.getByAccessor(input.accessor, {\n expand: input.expand,\n })\n },\n})\n","import { z } from 'zod'\nimport { maybeString, passthroughArray } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const areasList = defineHandler({\n name: 'areas.list',\n description: 'List bookable + public areas for the venue.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({ expand: z.array(z.literal('assets')).optional() }),\n outputSchema: passthroughArray,\n cliArgs: {\n expand: {\n type: 'string',\n description: \"Comma-separated expand sections (only 'assets' for now)\",\n },\n },\n parseInput: (args) => {\n const expandRaw = maybeString(args.expand)\n return {\n expand: expandRaw\n ? (expandRaw\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s === 'assets') as Array<'assets'>)\n : undefined,\n }\n },\n async run(input, ctx) {\n return ctx.client.areas.list({ expand: input.expand })\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { z } from 'zod'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const areasSubmitBookingRequest = defineHandler({\n name: 'areas.submitBookingRequest',\n description: 'Submit a public booking request for an area.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n /** Combine path param with the body schema from the SDK contract. */\n inputSchema: z.object({\n accessor: z.string().min(1),\n payload: schemas.SubmitAreaBookingRequest,\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n accessor: { type: 'positional', description: 'Area id or accessor' },\n ...jsonInputArgs,\n },\n parseInput: (args) => ({\n accessor: maybeString(args.accessor) ?? '',\n payload: readJsonInput(args) as z.infer<\n typeof schemas.SubmitAreaBookingRequest\n >,\n }),\n async run(input, ctx) {\n return ctx.client.areas.submitBookingRequest(\n input.accessor,\n input.payload as Parameters<\n typeof ctx.client.areas.submitBookingRequest\n >[1]\n )\n },\n})\n","import { readFileSync } from 'node:fs'\nimport { CLIError } from '@/errors'\n\n/**\n * Universal JSON input args for handlers whose input is rich enough that\n * surfacing every field as a flag would be tedious or brittle (reservations,\n * complex event creation, team-order auto-extend, etc.). Either flag may be\n * provided; one of them must be when the handler requires it.\n */\nexport const jsonInputArgs = {\n data: {\n type: 'string',\n description:\n 'JSON string with the request body (alternative to --data-file)',\n },\n 'data-file': {\n type: 'string',\n description:\n 'Path to a JSON file with the request body (alternative to --data)',\n },\n} as const\n\nexport function readJsonInput(args: Record<string, unknown>): unknown {\n const inline = typeof args.data === 'string' ? args.data : undefined\n const path =\n typeof args['data-file'] === 'string' ? args['data-file'] : undefined\n if (inline && path) {\n throw new CLIError('Provide either --data or --data-file, not both.')\n }\n if (!inline && !path) return undefined\n const raw = inline ?? readFileSync(path as string, 'utf8')\n try {\n return JSON.parse(raw) as unknown\n } catch (err) {\n throw new CLIError(\n `Invalid JSON in ${inline ? '--data' : path}: ${(err as Error).message}`\n )\n }\n}\n","import { z } from 'zod'\nimport { maybeString } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const basketsAbandon = defineHandler({\n name: 'baskets.abandon',\n description:\n \"Mark every active basket for the session as 'abandoned' — used by 'start fresh' flows.\",\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({ sessionId: z.string().min(1) }),\n outputSchema: z.object({ abandonedCount: z.number().int().nonnegative() }),\n cliArgs: {\n 'session-id': { type: 'string', description: 'Guest session id' },\n },\n parseInput: (args) => ({ sessionId: maybeString(args['session-id']) ?? '' }),\n async run(input, ctx) {\n return ctx.client.baskets.abandon(input.sessionId)\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\n/**\n * `schemas.AddToBasketRequest` is generated from the order3000 ts-rest\n * contract. We omit `venueId` because the CLI puts it in the URL path,\n * not the body.\n */\nconst inputSchema = schemas.AddToBasketRequest.omit({ venueId: true })\n\nexport const basketsAdd = defineHandler({\n name: 'baskets.add',\n description:\n 'Add an item to the basket. Creates the basket and guest customer when missing.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema,\n outputSchema: objectWithKnownKeys({}),\n cliArgs: { ...jsonInputArgs },\n parseInput: (args) => readJsonInput(args) as Record<string, unknown>,\n async run(input, ctx) {\n return ctx.client.baskets.add(\n input as unknown as Parameters<typeof ctx.client.baskets.add>[0]\n )\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const basketsGet = defineHandler({\n name: 'baskets.get',\n description:\n 'Get the current basket for a guest session (returns null if none).',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({ sessionId: z.string().min(1) }),\n outputSchema: objectWithKnownKeys({}).nullable(),\n cliArgs: {\n 'session-id': { type: 'string', description: 'Guest session id' },\n },\n parseInput: (args) => ({ sessionId: maybeString(args['session-id']) ?? '' }),\n async run(input, ctx) {\n return ctx.client.baskets.get(input.sessionId)\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { z } from 'zod'\nimport {\n idSchema,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const basketsGetTotals = defineHandler({\n name: 'baskets.getTotals',\n description:\n 'Compute canonical totals for a basket, including deposit credit.',\n contractVersion: CONTRACT_VERSION,\n /**\n * Combines the path-param `basketId` with the body shape generated from\n * `GetBasketTotalsRequest`. The SDK schema only carries the body fields,\n * so we extend it locally with the route param.\n */\n inputSchema: z.object({\n basketId: idSchema,\n declaredReturns: schemas.GetBasketTotalsRequest.shape.declaredReturns,\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'basket-id': { type: 'string', description: 'Basket id' },\n 'declared-returns': {\n type: 'string',\n description:\n 'JSON array of declared returns (e.g. \\'[{\"depositwareTemplateId\":\"...\",\"count\":2}]\\')',\n },\n },\n parseInput: (args) => {\n const declaredReturnsRaw = maybeString(args['declared-returns'])\n return {\n basketId: maybeString(args['basket-id']) ?? '',\n declaredReturns: declaredReturnsRaw\n ? (JSON.parse(declaredReturnsRaw) as unknown)\n : undefined,\n } as {\n basketId: string\n declaredReturns?: Array<{ depositwareTemplateId: string; count: number }>\n }\n },\n async run(input, ctx) {\n return ctx.client.baskets.getTotals(input.basketId, {\n declaredReturns: input.declaredReturns,\n })\n },\n})\n","import { z } from 'zod'\nimport {\n idSchema,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const basketsRemove = defineHandler({\n name: 'baskets.remove',\n description: 'Remove a basket item by id.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n sessionId: z.string().min(1),\n basketItemId: idSchema,\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'session-id': { type: 'string', description: 'Guest session id' },\n 'basket-item-id': {\n type: 'string',\n description: 'Basket item id to remove',\n },\n },\n parseInput: (args) => ({\n sessionId: maybeString(args['session-id']) ?? '',\n basketItemId: maybeString(args['basket-item-id']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.baskets.remove(input.sessionId, input.basketItemId)\n },\n})\n","import { z } from 'zod'\nimport {\n idSchema,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const basketsSetDeclaredReturns = defineHandler({\n name: 'baskets.setDeclaredReturns',\n description:\n 'Persist per-template declared-return counts on a basket (team-order participants).',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n basketId: idSchema,\n sessionId: z.string().min(1),\n declaredReturns: z.array(\n z.object({\n depositwareTemplateId: z.string().min(1),\n count: z.number().int().nonnegative(),\n })\n ),\n }),\n outputSchema: objectWithKnownKeys({\n basketId: z.string(),\n }),\n cliArgs: {\n 'basket-id': { type: 'string', description: 'Basket id' },\n 'session-id': {\n type: 'string',\n description: 'Guest session id (must match basket owner)',\n },\n 'declared-returns': {\n type: 'string',\n description: 'JSON array of declared returns',\n },\n },\n parseInput: (args) => {\n const declaredReturnsRaw = maybeString(args['declared-returns']) ?? '[]'\n return {\n basketId: maybeString(args['basket-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n declaredReturns: JSON.parse(declaredReturnsRaw) as Array<{\n depositwareTemplateId: string\n count: number\n }>,\n }\n },\n async run(input, ctx) {\n return ctx.client.baskets.setDeclaredReturns(input.basketId, {\n sessionId: input.sessionId,\n declaredReturns: input.declaredReturns,\n })\n },\n})\n","import { z } from 'zod'\nimport {\n idSchema,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const eventsGet = defineHandler({\n name: 'events.get',\n description: 'Fetch a single event by id.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({ eventId: idSchema }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'event-id': { type: 'positional', description: 'Event id' },\n },\n parseInput: (args) => ({ eventId: maybeString(args['event-id']) ?? '' }),\n async run(input, ctx) {\n return ctx.client.events.get(input.eventId)\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const eventsGetByAccessor = defineHandler({\n name: 'events.getByAccessor',\n description:\n 'Fetch an event by its accessor slug, with optional `expand` parts.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({\n accessor: z.string().min(1),\n expand: z.array(z.string()).optional(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n accessor: { type: 'positional', description: 'Event accessor (slug)' },\n expand: {\n type: 'string',\n description:\n \"Comma-separated expand sections (e.g. 'schedule,timeSlots,menus,posters')\",\n },\n },\n parseInput: (args) => {\n const expandRaw = maybeString(args.expand)\n return {\n accessor: maybeString(args.accessor) ?? '',\n expand: expandRaw\n ? expandRaw\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean)\n : undefined,\n }\n },\n async run(input, ctx) {\n return ctx.client.events.getByAccessor(input.accessor, {\n expand: input.expand as Parameters<\n typeof ctx.client.events.getByAccessor\n >[1] extends infer T\n ? T extends { expand?: infer E }\n ? E\n : never\n : never,\n })\n },\n})\n","import { z } from 'zod'\nimport {\n maybeBool,\n maybeNumber,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const eventsList = defineHandler({\n name: 'events.list',\n description: 'List events for the active venue, with optional filters.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({\n includePrivate: z.boolean().optional(),\n includeInactive: z.boolean().optional(),\n isPublic: z.boolean().optional(),\n isRecurring: z.boolean().optional(),\n isClosed: z.boolean().optional(),\n upcomingWithinDays: z.number().int().positive().optional(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'include-private': {\n type: 'boolean',\n description: 'Include private events',\n },\n 'include-inactive': {\n type: 'boolean',\n description: 'Include inactive events',\n },\n 'is-public': { type: 'boolean', description: 'Filter by public status' },\n 'is-recurring': {\n type: 'boolean',\n description: 'Filter by recurring status',\n },\n 'is-closed': { type: 'boolean', description: 'Filter by closed status' },\n 'upcoming-within-days': {\n type: 'string',\n description: 'Restrict to events within N days from now',\n },\n },\n parseInput: (args) => ({\n includePrivate: maybeBool(args['include-private']),\n includeInactive: maybeBool(args['include-inactive']),\n isPublic: maybeBool(args['is-public']),\n isRecurring: maybeBool(args['is-recurring']),\n isClosed: maybeBool(args['is-closed']),\n upcomingWithinDays: maybeNumber(args['upcoming-within-days']),\n }),\n async run(input, ctx) {\n return ctx.client.events.list(input)\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const eventsPlace = defineHandler({\n name: 'events.place',\n description: 'Create a new event (full payload via --data or --data-file).',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: schemas.CreateEventRequest,\n outputSchema: objectWithKnownKeys({}),\n cliArgs: { ...jsonInputArgs },\n parseInput: (args) => readJsonInput(args) as Record<string, unknown>,\n async run(input, ctx) {\n return ctx.client.events.place(\n input as unknown as Parameters<typeof ctx.client.events.place>[0]\n )\n },\n})\n","import { z } from 'zod'\nimport {\n idSchema,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const menusGet = defineHandler({\n name: 'menus.get',\n description: 'Fetch a menu by id, with optional `expand` parts.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({\n menuId: idSchema,\n expand: z.array(z.string()).optional(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'menu-id': { type: 'positional', description: 'Menu id (UUID)' },\n expand: { type: 'string', description: 'Comma-separated expand sections' },\n },\n parseInput: (args) => {\n const expandRaw = maybeString(args.expand)\n return {\n menuId: maybeString(args['menu-id']) ?? '',\n expand: expandRaw\n ? expandRaw\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean)\n : undefined,\n }\n },\n async run(input, ctx) {\n return ctx.client.menus.get(input.menuId, {\n expand: input.expand as Parameters<\n typeof ctx.client.menus.get\n >[1] extends infer T\n ? T extends { expand?: infer E }\n ? E\n : never\n : never,\n })\n },\n})\n","import { z } from 'zod'\nimport { maybeString, passthroughArray } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const menusGetBundles = defineHandler({\n name: 'menus.getBundles',\n description: 'List bundles for a menu (by id or accessor).',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({ menuIdOrAccessor: z.string().min(1) }),\n outputSchema: passthroughArray,\n cliArgs: {\n menu: { type: 'positional', description: 'Menu id or accessor' },\n },\n parseInput: (args) => ({ menuIdOrAccessor: maybeString(args.menu) ?? '' }),\n async run(input, ctx) {\n return ctx.client.menus.getBundles(input.menuIdOrAccessor)\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const menusGetByAccessor = defineHandler({\n name: 'menus.getByAccessor',\n description:\n 'Fetch a menu by its accessor slug, with optional `expand` parts.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({\n accessor: z.string().min(1),\n expand: z.array(z.string()).optional(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n accessor: { type: 'positional', description: 'Menu accessor (slug)' },\n expand: { type: 'string', description: 'Comma-separated expand sections' },\n },\n parseInput: (args) => {\n const expandRaw = maybeString(args.expand)\n return {\n accessor: maybeString(args.accessor) ?? '',\n expand: expandRaw\n ? expandRaw\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean)\n : undefined,\n }\n },\n async run(input, ctx) {\n return ctx.client.menus.getByAccessor(input.accessor, {\n expand: input.expand as Parameters<\n typeof ctx.client.menus.getByAccessor\n >[1] extends infer T\n ? T extends { expand?: infer E }\n ? E\n : never\n : never,\n })\n },\n})\n","import { z } from 'zod'\nimport { maybeString, passthroughArray } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const menusGetSubscriptions = defineHandler({\n name: 'menus.getSubscriptions',\n description: 'List active subscriptions for a menu (by id or accessor).',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({ menuIdOrAccessor: z.string().min(1) }),\n outputSchema: passthroughArray,\n cliArgs: {\n menu: { type: 'positional', description: 'Menu id or accessor' },\n },\n parseInput: (args) => ({ menuIdOrAccessor: maybeString(args.menu) ?? '' }),\n async run(input, ctx) {\n return ctx.client.menus.getSubscriptions(input.menuIdOrAccessor)\n },\n})\n","import { z } from 'zod'\nimport {\n idSchema,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const ordersConfirm = defineHandler({\n name: 'orders.confirm',\n description:\n 'Confirm an order after Stripe PaymentIntent succeeded; transitions the order to paid.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n orderId: idSchema,\n paymentIntentId: z.string().min(1),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'order-id': { type: 'positional', description: 'Order id' },\n 'payment-intent-id': {\n type: 'string',\n description:\n 'Stripe PaymentIntent id (from a successful client-side confirmation)',\n },\n },\n parseInput: (args) => ({\n orderId: maybeString(args['order-id']) ?? '',\n paymentIntentId: maybeString(args['payment-intent-id']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.orders.confirm(input.orderId, {\n paymentIntentId: input.paymentIntentId,\n })\n },\n})\n","import { z } from 'zod'\nimport {\n idSchema,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const ordersGet = defineHandler({\n name: 'orders.get',\n description: 'Fetch a single order by id.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({\n orderId: idSchema,\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'order-id': {\n type: 'positional',\n description: 'Order id (UUID)',\n },\n },\n parseInput: (args) => ({\n orderId: maybeString(args['order-id']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.orders.get(input.orderId)\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const ordersGetLatest = defineHandler({\n name: 'orders.getLatest',\n description:\n 'Get the most recent non-team order for a guest session (returns null if none).',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({\n sessionId: z.string().min(1),\n }),\n outputSchema: objectWithKnownKeys({\n id: z.string(),\n status: z.string(),\n }).nullable(),\n cliArgs: {\n 'session-id': {\n type: 'string',\n description: 'Guest session identifier (from the order3000 cookie)',\n },\n },\n parseInput: (args) => ({\n sessionId: maybeString(args['session-id']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.orders.getLatest(input.sessionId)\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\n/**\n * `schemas.PlaceOrderRequest` is generated from the order3000 ts-rest\n * contract → openapi.json. It mirrors the full `orders` insert row,\n * including columns the API derives server-side from the basket + bearer\n * token. We omit those so the CLI input matches what callers actually\n * have to provide.\n */\nconst inputSchema = schemas.PlaceOrderRequest.omit({\n id: true,\n venueId: true,\n publicId: true,\n quickReferenceNumber: true,\n status: true,\n paymentIntentId: true,\n paymentStatus: true,\n taxAmount: true,\n totalAmount: true,\n currency: true,\n orderedAt: true,\n orderedBy: true,\n updatedAt: true,\n updatedBy: true,\n teamOrderId: true,\n participantDisplayName: true,\n leadSettledAt: true,\n})\n\nexport const ordersPlace = defineHandler({\n name: 'orders.place',\n description: 'Place a new (non-team) order from an existing basket.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema,\n outputSchema: objectWithKnownKeys({\n id: z.string(),\n status: z.string(),\n }),\n cliArgs: {\n 'basket-id': { type: 'string', description: 'Basket id' },\n 'session-id': { type: 'string', description: 'Guest session id' },\n 'payment-method': {\n type: 'string',\n description: 'Payment method: card | cash | voucher',\n },\n 'fulfillment-type': {\n type: 'string',\n description: 'Fulfillment type: pickup | delivery',\n },\n 'fulfillment-at': {\n type: 'string',\n description: 'ISO 8601 datetime for the desired pickup/delivery slot',\n },\n },\n parseInput: (args) => ({\n basketId: maybeString(args['basket-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n paymentMethod: maybeString(args['payment-method']) as\n | 'card'\n | 'cash'\n | 'voucher',\n fulfillmentType: maybeString(args['fulfillment-type']) as\n | 'pickup'\n | 'delivery',\n fulfillmentAt: maybeString(args['fulfillment-at']),\n }),\n async run(input, ctx) {\n return ctx.client.orders.place(\n input as unknown as Parameters<typeof ctx.client.orders.place>[0]\n )\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const paymentIntentsCreate = defineHandler({\n name: 'paymentIntents.create',\n description:\n 'Create a Stripe PaymentIntent for an order. Returns clientSecret and orderId.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: schemas.CreatePaymentIntentRequest,\n outputSchema: objectWithKnownKeys({}),\n cliArgs: { ...jsonInputArgs },\n parseInput: (args) => readJsonInput(args) as Record<string, unknown>,\n async run(input, ctx) {\n return ctx.client.paymentIntents.create(\n input as unknown as Parameters<typeof ctx.client.paymentIntents.create>[0]\n )\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const paymentIntentsCreateDelta = defineHandler({\n name: 'paymentIntents.createDelta',\n description:\n 'Create a delta PaymentIntent for a team-order participant who added items after paying.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: schemas.CreateDeltaPaymentIntentRequest,\n outputSchema: objectWithKnownKeys({}),\n cliArgs: { ...jsonInputArgs },\n parseInput: (args) => readJsonInput(args) as Record<string, unknown>,\n async run(input, ctx) {\n return ctx.client.paymentIntents.createDelta(\n input as unknown as Parameters<\n typeof ctx.client.paymentIntents.createDelta\n >[0]\n )\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const paymentIntentsReduceDelta = defineHandler({\n name: 'paymentIntents.reduceDelta',\n description:\n 'Release part of a participant authorisation when items are removed from the basket.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: schemas.ReduceDeltaPaymentIntentRequest,\n outputSchema: objectWithKnownKeys({}),\n cliArgs: { ...jsonInputArgs },\n parseInput: (args) => readJsonInput(args) as Record<string, unknown>,\n async run(input, ctx) {\n return ctx.client.paymentIntents.reduceDelta(\n input as unknown as Parameters<\n typeof ctx.client.paymentIntents.reduceDelta\n >[0]\n )\n },\n})\n","import { z } from 'zod'\nimport {\n idSchema,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const reservationsGet = defineHandler({\n name: 'reservations.get',\n description: 'Fetch a reservation by id.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({ reservationId: idSchema }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'reservation-id': { type: 'positional', description: 'Reservation id' },\n },\n parseInput: (args) => ({\n reservationId: maybeString(args['reservation-id']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.reservations.get(input.reservationId)\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const reservationsMake = defineHandler({\n name: 'reservations.make',\n description: 'Make a new reservation (payload via --data or --data-file).',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: schemas.MakeReservationRequest,\n outputSchema: objectWithKnownKeys({}),\n cliArgs: { ...jsonInputArgs },\n parseInput: (args) => readJsonInput(args) as Record<string, unknown>,\n async run(input, ctx) {\n return ctx.client.reservations.make(\n input as unknown as Parameters<typeof ctx.client.reservations.make>[0]\n )\n },\n})\n","import { z } from 'zod'\nimport { maybeString } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const subscriptionsCancel = defineHandler({\n name: 'subscriptions.cancel',\n description: \"Cancel a customer's subscription.\",\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n subscriptionIdOrAccessor: z.string().min(1),\n subscriberId: z.string().min(1),\n }),\n // SDK returns void; expose an explicit \"ok\" envelope so JSON output is\n // never an empty body and the contract has a stable schema to validate.\n outputSchema: z.object({ ok: z.literal(true) }),\n cliArgs: {\n subscription: {\n type: 'positional',\n description: 'Subscription id or accessor',\n },\n 'subscriber-id': {\n type: 'string',\n description: 'Subscriber row id to cancel',\n },\n },\n parseInput: (args) => ({\n subscriptionIdOrAccessor: maybeString(args.subscription) ?? '',\n subscriberId: maybeString(args['subscriber-id']) ?? '',\n }),\n async run(input, ctx) {\n await ctx.client.subscriptions.cancel(\n input.subscriptionIdOrAccessor,\n input.subscriberId\n )\n return { ok: true as const }\n },\n})\n","import { z } from 'zod'\nimport {\n idSchema,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const subscriptionsGet = defineHandler({\n name: 'subscriptions.get',\n description: 'Fetch a subscription by id.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({ subscriptionId: idSchema }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'subscription-id': {\n type: 'positional',\n description: 'Subscription id (UUID)',\n },\n },\n parseInput: (args) => ({\n subscriptionId: maybeString(args['subscription-id']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.subscriptions.get(input.subscriptionId)\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const subscriptionsGetByAccessor = defineHandler({\n name: 'subscriptions.getByAccessor',\n description: 'Fetch a subscription by its accessor slug.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({ accessor: z.string().min(1) }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n accessor: {\n type: 'positional',\n description: 'Subscription accessor (slug)',\n },\n },\n parseInput: (args) => ({ accessor: maybeString(args.accessor) ?? '' }),\n async run(input, ctx) {\n return ctx.client.subscriptions.getByAccessor(input.accessor)\n },\n})\n","import { z } from 'zod'\nimport { maybeString, passthroughArray } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const subscriptionsGetCredits = defineHandler({\n name: 'subscriptions.getCredits',\n description: 'List credits for a subscriber, optionally filtered by status.',\n contractVersion: CONTRACT_VERSION,\n /**\n * Path params + query params. `openapi-zod-client` doesn't emit named\n * components for query schemas (only for body refs), so the CLI mirrors\n * the contract inline. The enum literals match the order3000 contract\n * (`apps/order3000/src/app/api/openapi/contracts/subscriptions.ts`).\n */\n inputSchema: z.object({\n subscriptionIdOrAccessor: z.string().min(1),\n subscriberId: z.string().min(1),\n status: z.enum(['available', 'redeemed', 'expired']).optional(),\n }),\n outputSchema: passthroughArray,\n cliArgs: {\n subscription: {\n type: 'positional',\n description: 'Subscription id or accessor',\n },\n 'subscriber-id': { type: 'string', description: 'Subscriber row id' },\n status: {\n type: 'string',\n description: 'Filter by credit status: available | redeemed | expired',\n },\n },\n parseInput: (args) => ({\n subscriptionIdOrAccessor: maybeString(args.subscription) ?? '',\n subscriberId: maybeString(args['subscriber-id']) ?? '',\n status: maybeString(args.status) as\n | 'available'\n | 'redeemed'\n | 'expired'\n | undefined,\n }),\n async run(input, ctx) {\n return ctx.client.subscriptions.getCredits(\n input.subscriptionIdOrAccessor,\n input.subscriberId,\n input.status\n )\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const subscriptionsSubscribe = defineHandler({\n name: 'subscriptions.subscribe',\n description:\n 'Start a Stripe Checkout session to subscribe a customer to a subscription plan.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n subscriptionIdOrAccessor: z.string().min(1),\n email: z.string().email(),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n sessionId: z.string().optional(),\n successUrl: z.string().url(),\n cancelUrl: z.string().url(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n subscription: {\n type: 'positional',\n description: 'Subscription id or accessor',\n },\n email: { type: 'string', description: 'Customer email' },\n 'first-name': { type: 'string', description: 'Customer first name' },\n 'last-name': { type: 'string', description: 'Customer last name' },\n 'session-id': {\n type: 'string',\n description: 'Optional guest session id to attach',\n },\n 'success-url': {\n type: 'string',\n description: 'Stripe Checkout success URL',\n },\n 'cancel-url': { type: 'string', description: 'Stripe Checkout cancel URL' },\n },\n parseInput: (args) => ({\n subscriptionIdOrAccessor: maybeString(args.subscription) ?? '',\n email: maybeString(args.email) ?? '',\n firstName: maybeString(args['first-name']),\n lastName: maybeString(args['last-name']),\n sessionId: maybeString(args['session-id']),\n successUrl: maybeString(args['success-url']) ?? '',\n cancelUrl: maybeString(args['cancel-url']) ?? '',\n }),\n async run(input, ctx) {\n const { subscriptionIdOrAccessor, ...request } = input\n return ctx.client.subscriptions.subscribe(subscriptionIdOrAccessor, request)\n },\n})\n","import { z } from 'zod'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\nimport { VERSION } from '@/version'\n\nexport const systemPing = defineHandler({\n name: 'system.ping',\n description:\n 'Health check — returns the CLI version and a server-side timestamp echo',\n contractVersion: CONTRACT_VERSION,\n requiresCredentials: false,\n inputSchema: z.object({\n message: z.string().min(1).max(200).optional(),\n }),\n outputSchema: z.object({\n ok: z.literal(true),\n cliVersion: z.string(),\n timestamp: z.string().datetime(),\n echo: z.string().optional(),\n }),\n cliArgs: {\n message: {\n type: 'string',\n description: 'Optional string to echo back (max 200 chars)',\n },\n },\n parseInput: (args) => ({\n message: typeof args.message === 'string' ? args.message : undefined,\n }),\n async run(input) {\n return {\n ok: true as const,\n cliVersion: VERSION,\n timestamp: new Date().toISOString(),\n echo: input.message,\n }\n },\n})\n","{\n \"name\": \"@order3000/cli\",\n \"version\": \"0.0.0\",\n \"description\": \"Agent-friendly command-line interface for the order3000 platform\",\n \"type\": \"module\",\n \"private\": false,\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"bin\": {\n \"order3000\": \"./dist/cli.js\"\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"pnpm build:schemas:check && tsup\",\n \"build:schemas\": \"tsx scripts/build-schemas.ts\",\n \"build:schemas:check\": \"tsx scripts/build-schemas.ts --check\",\n \"build:binaries\": \"tsx scripts/build-binaries.ts\",\n \"build:binaries:check\": \"tsx scripts/build-binaries.ts --check\",\n \"dev\": \"tsup --watch\",\n \"start\": \"node ./dist/cli.js\",\n \"lint\": \"eslint src --ext .ts\",\n \"lint:fix\": \"eslint src --ext .ts --fix\"\n },\n \"dependencies\": {\n \"@napi-rs/keyring\": \"^1.1.7\",\n \"citty\": \"^0.1.6\",\n \"consola\": \"^3.4.2\",\n \"order3000\": \"workspace:*\",\n \"zod\": \"^3.23.8\",\n \"zod-to-json-schema\": \"^3.24.5\"\n },\n \"devDependencies\": {\n \"@kolaveri/eslint-config\": \"workspace:*\",\n \"@kolaveri/prettier-config\": \"workspace:*\",\n \"@kolaveri/tsconfig\": \"workspace:*\",\n \"@types/node\": \"^24.10.0\",\n \"eslint\": \"^8.57.0\",\n \"prettier\": \"^3.7.4\",\n \"tsup\": \"^8.3.5\",\n \"tsx\": \"^4.19.2\",\n \"typescript\": \"^5.9.3\"\n },\n \"prettier\": \"@kolaveri/prettier-config\"\n}\n","// Imported as a static JSON module so the version is inlined at build time\n// by both tsup (npm dist) and Bun (--compile binaries). Avoids `require` /\n// dynamic FS reads that don't resolve inside Bun's virtual filesystem.\nimport pkg from '../package.json' with { type: 'json' }\n\nexport const VERSION: string = pkg.version\n","import { z } from 'zod'\nimport {\n isoDateTime,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersAutoExtendFulfillmentIfExpired = defineHandler({\n name: 'teamOrders.autoExtendFulfillmentIfExpired',\n description:\n 'Any participant proposes an auto-extend when fulfillmentAt has passed while still collecting.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().min(1),\n proposedFulfillmentAt: isoDateTime,\n }),\n outputSchema: objectWithKnownKeys({ extended: z.boolean() }),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': { type: 'string', description: 'Caller session id' },\n 'proposed-fulfillment-at': {\n type: 'string',\n description: 'Proposed new fulfillmentAt (ISO 8601)',\n },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n proposedFulfillmentAt: maybeString(args['proposed-fulfillment-at']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.autoExtendFulfillmentIfExpired(\n input.publicId,\n {\n sessionId: input.sessionId,\n proposedFulfillmentAt: input.proposedFulfillmentAt,\n }\n )\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersCancel = defineHandler({\n name: 'teamOrders.cancel',\n description:\n 'Lead cancels pre-placement. Voids every authorised PaymentIntent.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().min(1),\n reason: z.string().optional(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': { type: 'string', description: 'Lead session id' },\n reason: {\n type: 'string',\n description: 'Free-text reason shown to participants',\n },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n reason: maybeString(args.reason),\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.cancel(input.publicId, {\n sessionId: input.sessionId,\n reason: input.reason,\n })\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { z } from 'zod'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersCreate = defineHandler({\n name: 'teamOrders.create',\n description:\n 'Lead creates a team order from their active basket. Returns the unguessable publicId.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: schemas.CreateTeamOrderRequest,\n outputSchema: objectWithKnownKeys({\n publicId: z.string(),\n teamOrderId: z.string(),\n }),\n cliArgs: { ...jsonInputArgs },\n parseInput: (args) => readJsonInput(args) as Record<string, unknown>,\n async run(input, ctx) {\n return ctx.client.teamOrders.create(\n input as unknown as Parameters<typeof ctx.client.teamOrders.create>[0]\n )\n },\n})\n","import { z } from 'zod'\nimport {\n isoDateTime,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersExtendDeadline = defineHandler({\n name: 'teamOrders.extendDeadline',\n description: 'Lead pushes the team-order deadline.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().min(1),\n newDeadlineAt: isoDateTime,\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': { type: 'string', description: 'Lead session id' },\n 'new-deadline-at': {\n type: 'string',\n description: 'New deadline (ISO 8601 datetime)',\n },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n newDeadlineAt: maybeString(args['new-deadline-at']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.extendDeadline(input.publicId, {\n sessionId: input.sessionId,\n newDeadlineAt: input.newDeadlineAt,\n })\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersGet = defineHandler({\n name: 'teamOrders.get',\n description:\n 'Public read of a team order by publicId. Pass --session-id to gate isLead correctly.',\n contractVersion: CONTRACT_VERSION,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().optional(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': {\n type: 'string',\n description: 'Caller session id (drives isLead)',\n },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']),\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.get(input.publicId, input.sessionId)\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersJoin = defineHandler({\n name: 'teamOrders.join',\n description: 'Participant joins a team order. Idempotent.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().min(1),\n displayName: z.string().optional(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': { type: 'string', description: 'Joiner session id' },\n 'display-name': { type: 'string', description: 'Optional display name' },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n displayName: maybeString(args['display-name']),\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.join(input.publicId, {\n sessionId: input.sessionId,\n displayName: input.displayName,\n })\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersSetDiningLocation = defineHandler({\n name: 'teamOrders.setDiningLocation',\n description:\n 'Lead sets the free-form \"where we will eat\" text on the team order.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().min(1),\n diningLocation: z.string().min(1),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': { type: 'string', description: 'Lead session id' },\n 'dining-location': {\n type: 'string',\n description: 'Free-form location text',\n },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n diningLocation: maybeString(args['dining-location']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.setDiningLocation(input.publicId, {\n sessionId: input.sessionId,\n diningLocation: input.diningLocation,\n })\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersSetDiningTime = defineHandler({\n name: 'teamOrders.setDiningTime',\n description:\n 'Lead sets when the team will start eating (HH:MM in venue timezone).',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().min(1),\n diningTime: z.string().regex(/^\\d{2}:\\d{2}$/, 'Expected HH:MM'),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': { type: 'string', description: 'Lead session id' },\n 'dining-time': { type: 'string', description: 'Dining time (HH:MM)' },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n diningTime: maybeString(args['dining-time']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.setDiningTime(input.publicId, {\n sessionId: input.sessionId,\n diningTime: input.diningTime,\n })\n },\n})\n","import { z } from 'zod'\nimport {\n isoDateTime,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersSetFulfillmentAt = defineHandler({\n name: 'teamOrders.setFulfillmentAt',\n description:\n 'Lead commits the shared pickup/delivery time. Required before submit.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().min(1),\n fulfillmentAt: isoDateTime,\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': { type: 'string', description: 'Lead session id' },\n 'fulfillment-at': {\n type: 'string',\n description: 'Pickup/delivery time (ISO 8601)',\n },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n fulfillmentAt: maybeString(args['fulfillment-at']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.setFulfillmentAt(input.publicId, {\n sessionId: input.sessionId,\n fulfillmentAt: input.fulfillmentAt,\n })\n },\n})\n","import { z } from 'zod'\nimport {\n idSchema,\n maybeBool,\n maybeString,\n objectWithKnownKeys,\n} from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersSetOrderLeadSettled = defineHandler({\n name: 'teamOrders.setOrderLeadSettled',\n description:\n \"Toggle a participant's settled tick on the Lead's settle-up checklist.\",\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().min(1),\n orderId: idSchema,\n settled: z.boolean(),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': { type: 'string', description: 'Lead session id' },\n 'order-id': {\n type: 'string',\n description: 'Child order id to mark settled or unsettled',\n },\n settled: {\n type: 'boolean',\n description: 'true to mark settled, false to clear',\n },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n orderId: maybeString(args['order-id']) ?? '',\n settled: maybeBool(args.settled) ?? false,\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.setOrderLeadSettled(input.publicId, {\n sessionId: input.sessionId,\n orderId: input.orderId,\n settled: input.settled,\n })\n },\n})\n","import { z } from 'zod'\nimport { maybeString, objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersSubmit = defineHandler({\n name: 'teamOrders.submit',\n description:\n 'Lead submits the team order — captures auths, finalises child orders.',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n sessionId: z.string().min(1),\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n 'session-id': { type: 'string', description: 'Lead session id' },\n },\n parseInput: (args) => ({\n publicId: maybeString(args['public-id']) ?? '',\n sessionId: maybeString(args['session-id']) ?? '',\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.submit(input.publicId, {\n sessionId: input.sessionId,\n })\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { z } from 'zod'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersSwitchFulfillment = defineHandler({\n name: 'teamOrders.switchFulfillment',\n description:\n 'Lead flips pickup ↔ delivery. Pass the full request body via --data (sessionId, fulfillmentType, optional deliveryAddress).',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n request: schemas.SwitchFulfillmentTeamOrderRequest,\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n ...jsonInputArgs,\n },\n parseInput: (args) => ({\n publicId: typeof args['public-id'] === 'string' ? args['public-id'] : '',\n request: readJsonInput(args) as z.infer<\n typeof schemas.SwitchFulfillmentTeamOrderRequest\n >,\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.switchFulfillment(\n input.publicId,\n input.request as unknown as Parameters<\n typeof ctx.client.teamOrders.switchFulfillment\n >[1]\n )\n },\n})\n","import { schemas } from 'order3000/schemas'\nimport { z } from 'zod'\nimport { jsonInputArgs, readJsonInput } from '@/handlers/_shared/jsonInput'\nimport { objectWithKnownKeys } from '@/handlers/_shared/schemas'\nimport { defineHandler } from '@/handlers/types'\nimport { CONTRACT_VERSION } from '@/schema/version'\n\nexport const teamOrdersUpdateDeliveryAddress = defineHandler({\n name: 'teamOrders.updateDeliveryAddress',\n description:\n 'Lead replaces the delivery address. Pass the full request body via --data (sessionId, deliveryAddress).',\n contractVersion: CONTRACT_VERSION,\n mutating: true,\n inputSchema: z.object({\n publicId: z.string().min(1),\n request: schemas.UpdateDeliveryAddressTeamOrderRequest,\n }),\n outputSchema: objectWithKnownKeys({}),\n cliArgs: {\n 'public-id': { type: 'positional', description: 'Team order publicId' },\n ...jsonInputArgs,\n },\n parseInput: (args) => ({\n publicId: typeof args['public-id'] === 'string' ? args['public-id'] : '',\n request: readJsonInput(args) as z.infer<\n typeof schemas.UpdateDeliveryAddressTeamOrderRequest\n >,\n }),\n async run(input, ctx) {\n return ctx.client.teamOrders.updateDeliveryAddress(\n input.publicId,\n input.request as unknown as Parameters<\n typeof ctx.client.teamOrders.updateDeliveryAddress\n >[1]\n )\n },\n})\n","import { areasGetAvailability } from '@/handlers/areas/getAvailability'\nimport { areasGetByAccessor } from '@/handlers/areas/getByAccessor'\nimport { areasList } from '@/handlers/areas/list'\nimport { areasSubmitBookingRequest } from '@/handlers/areas/submitBookingRequest'\nimport { basketsAbandon } from '@/handlers/baskets/abandon'\nimport { basketsAdd } from '@/handlers/baskets/add'\nimport { basketsGet } from '@/handlers/baskets/get'\nimport { basketsGetTotals } from '@/handlers/baskets/getTotals'\nimport { basketsRemove } from '@/handlers/baskets/remove'\nimport { basketsSetDeclaredReturns } from '@/handlers/baskets/setDeclaredReturns'\nimport { eventsGet } from '@/handlers/events/get'\nimport { eventsGetByAccessor } from '@/handlers/events/getByAccessor'\nimport { eventsList } from '@/handlers/events/list'\nimport { eventsPlace } from '@/handlers/events/place'\nimport { menusGet } from '@/handlers/menus/get'\nimport { menusGetBundles } from '@/handlers/menus/getBundles'\nimport { menusGetByAccessor } from '@/handlers/menus/getByAccessor'\nimport { menusGetSubscriptions } from '@/handlers/menus/getSubscriptions'\nimport { ordersConfirm } from '@/handlers/orders/confirm'\nimport { ordersGet } from '@/handlers/orders/get'\nimport { ordersGetLatest } from '@/handlers/orders/getLatest'\nimport { ordersPlace } from '@/handlers/orders/place'\nimport { paymentIntentsCreate } from '@/handlers/paymentIntents/create'\nimport { paymentIntentsCreateDelta } from '@/handlers/paymentIntents/createDelta'\nimport { paymentIntentsReduceDelta } from '@/handlers/paymentIntents/reduceDelta'\nimport { reservationsGet } from '@/handlers/reservations/get'\nimport { reservationsMake } from '@/handlers/reservations/make'\nimport { subscriptionsCancel } from '@/handlers/subscriptions/cancel'\nimport { subscriptionsGet } from '@/handlers/subscriptions/get'\nimport { subscriptionsGetByAccessor } from '@/handlers/subscriptions/getByAccessor'\nimport { subscriptionsGetCredits } from '@/handlers/subscriptions/getCredits'\nimport { subscriptionsSubscribe } from '@/handlers/subscriptions/subscribe'\nimport { systemPing } from '@/handlers/system/ping'\nimport { teamOrdersAutoExtendFulfillmentIfExpired } from '@/handlers/teamOrders/autoExtendFulfillmentIfExpired'\nimport { teamOrdersCancel } from '@/handlers/teamOrders/cancel'\nimport { teamOrdersCreate } from '@/handlers/teamOrders/create'\nimport { teamOrdersExtendDeadline } from '@/handlers/teamOrders/extendDeadline'\nimport { teamOrdersGet } from '@/handlers/teamOrders/get'\nimport { teamOrdersJoin } from '@/handlers/teamOrders/join'\nimport { teamOrdersSetDiningLocation } from '@/handlers/teamOrders/setDiningLocation'\nimport { teamOrdersSetDiningTime } from '@/handlers/teamOrders/setDiningTime'\nimport { teamOrdersSetFulfillmentAt } from '@/handlers/teamOrders/setFulfillmentAt'\nimport { teamOrdersSetOrderLeadSettled } from '@/handlers/teamOrders/setOrderLeadSettled'\nimport { teamOrdersSubmit } from '@/handlers/teamOrders/submit'\nimport { teamOrdersSwitchFulfillment } from '@/handlers/teamOrders/switchFulfillment'\nimport { teamOrdersUpdateDeliveryAddress } from '@/handlers/teamOrders/updateDeliveryAddress'\nimport type { AnyHandler } from '@/handlers/types'\n\n/**\n * Single source of truth for every handler the CLI (and future MCP server)\n * exposes. Handlers are grouped by their first dotted segment, which becomes\n * a citty subcommand group.\n *\n * Adding a new handler:\n * 1. Create `src/handlers/<group>/<leaf>.ts` exporting a `defineHandler({...})`\n * 2. Import + register here under the matching group key\n * 3. Run `pnpm build:schemas` to refresh `schemas/v1/<name>.{input,output}.json`\n * and commit the diff\n */\nexport const handlerGroups = {\n system: [systemPing],\n areas: [\n areasList,\n areasGetByAccessor,\n areasGetAvailability,\n areasSubmitBookingRequest,\n ],\n baskets: [\n basketsGet,\n basketsAdd,\n basketsRemove,\n basketsGetTotals,\n basketsAbandon,\n basketsSetDeclaredReturns,\n ],\n events: [eventsList, eventsGet, eventsGetByAccessor, eventsPlace],\n menus: [menusGet, menusGetByAccessor, menusGetBundles, menusGetSubscriptions],\n orders: [ordersGetLatest, ordersGet, ordersPlace, ordersConfirm],\n paymentIntents: [\n paymentIntentsCreate,\n paymentIntentsCreateDelta,\n paymentIntentsReduceDelta,\n ],\n reservations: [reservationsMake, reservationsGet],\n subscriptions: [\n subscriptionsGet,\n subscriptionsGetByAccessor,\n subscriptionsSubscribe,\n subscriptionsCancel,\n subscriptionsGetCredits,\n ],\n teamOrders: [\n teamOrdersCreate,\n teamOrdersGet,\n teamOrdersJoin,\n teamOrdersSubmit,\n teamOrdersCancel,\n teamOrdersExtendDeadline,\n teamOrdersSetFulfillmentAt,\n teamOrdersSetDiningLocation,\n teamOrdersSetDiningTime,\n teamOrdersSetOrderLeadSettled,\n teamOrdersAutoExtendFulfillmentIfExpired,\n teamOrdersSwitchFulfillment,\n teamOrdersUpdateDeliveryAddress,\n ],\n} satisfies Record<string, ReadonlyArray<AnyHandler>>\n\nexport const allHandlers: ReadonlyArray<AnyHandler> =\n Object.values(handlerGroups).flat()\n"],"mappings":"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","names":["defineCommand","showUsage","consola","defineCommand","defineCommand","consola","mkdir","readFile","stat","writeFile","dirname","z","SECURE_FILE_MODE","SECURE_DIR_MODE","EMPTY","stat","readFile","mkdir","dirname","writeFile","defineCommand","consola","defineCommand","consola","defineCommand","consola","defineCommand","consola","defineCommand","consola","defineCommand","consola","cached","defineCommand","consola","defineCommand","defineCommand","consola","defineCommand","rawArgs","consola","z","z","z","z","z","z","z","z","z","z","z","schemas","schemas","z","z","schemas","z","z","schemas","z","z","z","z","z","z","z","z","z","z","schemas","schemas","z","z","z","z","z","z","z","z","z","z","z","z","z","z","schemas","z","inputSchema","schemas","z","schemas","schemas","schemas","schemas","schemas","schemas","z","z","schemas","schemas","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","schemas","z","schemas","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","schemas","z","z","schemas","schemas","z","z","schemas","defineCommand","rawArgs","showUsage","consola"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@order3000/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Agent-friendly command-line interface for the order3000 platform",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"private": false,
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public"
|
|
9
|
+
},
|
|
10
|
+
"bin": {
|
|
11
|
+
"order3000": "./dist/cli.js"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist"
|
|
15
|
+
],
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@napi-rs/keyring": "^1.1.7",
|
|
18
|
+
"citty": "^0.1.6",
|
|
19
|
+
"consola": "^3.4.2",
|
|
20
|
+
"zod": "^3.23.8",
|
|
21
|
+
"zod-to-json-schema": "^3.24.5",
|
|
22
|
+
"order3000": "0.19.0"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/node": "^24.10.0",
|
|
26
|
+
"eslint": "^8.57.0",
|
|
27
|
+
"prettier": "^3.7.4",
|
|
28
|
+
"tsup": "^8.3.5",
|
|
29
|
+
"tsx": "^4.19.2",
|
|
30
|
+
"typescript": "^5.9.3",
|
|
31
|
+
"@kolaveri/eslint-config": "1.5.2",
|
|
32
|
+
"@kolaveri/prettier-config": "1.0.6",
|
|
33
|
+
"@kolaveri/tsconfig": "1.0.1"
|
|
34
|
+
},
|
|
35
|
+
"prettier": "@kolaveri/prettier-config",
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "pnpm build:schemas:check && tsup",
|
|
38
|
+
"build:schemas": "tsx scripts/build-schemas.ts",
|
|
39
|
+
"build:schemas:check": "tsx scripts/build-schemas.ts --check",
|
|
40
|
+
"build:binaries": "tsx scripts/build-binaries.ts",
|
|
41
|
+
"build:binaries:check": "tsx scripts/build-binaries.ts --check",
|
|
42
|
+
"dev": "tsup --watch",
|
|
43
|
+
"start": "node ./dist/cli.js",
|
|
44
|
+
"lint": "eslint src --ext .ts",
|
|
45
|
+
"lint:fix": "eslint src --ext .ts --fix"
|
|
46
|
+
}
|
|
47
|
+
}
|