@functional-systems/lambdadb-cli 0.1.7-dev.23 → 0.1.7-dev.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/CONTRIBUTING.md +29 -0
  3. package/DESIGN.md +9 -3
  4. package/ONBOARDING.md +417 -0
  5. package/README.md +390 -138
  6. package/dist/account.d.ts +50 -0
  7. package/dist/account.js +301 -0
  8. package/dist/account.js.map +1 -0
  9. package/dist/agent-config.d.ts +4 -3
  10. package/dist/agent-config.js +12 -5
  11. package/dist/agent-config.js.map +1 -1
  12. package/dist/agents.d.ts +3 -3
  13. package/dist/agents.js +8 -8
  14. package/dist/agents.js.map +1 -1
  15. package/dist/cli.js +44 -6
  16. package/dist/cli.js.map +1 -1
  17. package/dist/config.d.ts +10 -4
  18. package/dist/config.js +43 -6
  19. package/dist/config.js.map +1 -1
  20. package/dist/credentials.d.ts +29 -0
  21. package/dist/credentials.js +116 -0
  22. package/dist/credentials.js.map +1 -0
  23. package/dist/device-auth.d.ts +16 -0
  24. package/dist/device-auth.js +160 -0
  25. package/dist/device-auth.js.map +1 -0
  26. package/dist/errors.d.ts +7 -0
  27. package/dist/errors.js +35 -1
  28. package/dist/errors.js.map +1 -1
  29. package/dist/init.d.ts +5 -2
  30. package/dist/init.js +50 -31
  31. package/dist/init.js.map +1 -1
  32. package/dist/mcp.js +8 -1
  33. package/dist/mcp.js.map +1 -1
  34. package/dist/projects.d.ts +29 -0
  35. package/dist/projects.js +323 -0
  36. package/dist/projects.js.map +1 -0
  37. package/package.json +6 -2
  38. package/skills/lambdadb/SKILL.md +9 -6
  39. package/src/account.ts +351 -0
  40. package/src/agent-config.ts +14 -8
  41. package/src/agents.ts +8 -8
  42. package/src/cli.ts +46 -6
  43. package/src/config.ts +43 -10
  44. package/src/credentials.ts +138 -0
  45. package/src/device-auth.ts +200 -0
  46. package/src/errors.ts +31 -2
  47. package/src/init.ts +42 -29
  48. package/src/mcp.ts +7 -1
  49. package/src/projects.ts +439 -0
package/dist/cli.js CHANGED
@@ -1,15 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command, CommanderError, Option } from 'commander';
3
3
  import { readFileSync } from 'node:fs';
4
- import { integer, name, resolveConfig, saveSettings } from './config.js';
4
+ import { integer, name, resolveConfig, saveSettings, settings } from './config.js';
5
5
  import { createInput, parseRef, queryInput, readJson, readJsonl, updateInput } from './input.js';
6
6
  import { importDocuments, planBatches } from './import-workflow.js';
7
- import { definitelyRejected, describeError, InputError, isInputError } from './errors.js';
7
+ import { definitelyRejected, describeError, InputError, ManagementError, isInputError } from './errors.js';
8
8
  import { Output } from './output.js';
9
9
  import { checkConnection, runtime } from './runtime.js';
10
+ import { CredentialVault, credentialReference } from './credentials.js';
10
11
  import { initialize } from './init.js';
11
12
  import { serveMcp } from './mcp.js';
12
13
  import { agentNames } from './agents.js';
14
+ import { login, logout, management } from './account.js';
15
+ import { organizations, projects, createProject, useProject } from './projects.js';
13
16
  const output = new Output();
14
17
  output.protect(process.env.LAMBDADB_API_KEY);
15
18
  if (process.env.LAMBDADB_API_KEY_ENV)
@@ -22,11 +25,14 @@ const program = new Command()
22
25
  .description('Project-scoped LambdaDB CLI. Only init prompts; all other commands are non-interactive.')
23
26
  .version(JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version)
24
27
  .option('--json', 'Emit one versioned JSON result on stdout; diagnostics stay on stderr')
28
+ .option('--api-url <url>', 'Account API origin (login reuses the saved origin, otherwise https://api.lambdadb.ai)')
25
29
  .option('--endpoint <url>', 'API origin (overrides LAMBDADB_ENDPOINT and saved configuration)')
26
30
  .option('--project <name>', 'Existing project (overrides LAMBDADB_PROJECT and saved configuration)')
27
31
  .option('--api-key-env <name>', 'Environment variable holding the key; never pass a key as an argument')
32
+ .option('--credential-store <store>', 'OS credential backend: auto, keychain, windows, secret-service or keyutils (init --connect selects auto)')
33
+ .option('--credential-id <uuid>', 'Non-secret saved credential reference (normally generated by init)')
28
34
  .option('--config <path>', 'Configuration path (overrides LAMBDADB_CONFIG)')
29
- .option('--timeout-ms <ms>', 'Total network budget, 1–3600000 ms (default 30000)')
35
+ .option('--timeout-ms <ms>', 'Data API: total command budget; account/project API: per HTTP request, 1–3600000 ms (default 30000)')
30
36
  .showSuggestionAfterError(false)
31
37
  .exitOverride()
32
38
  .configureOutput({ writeErr: () => { } })
@@ -71,17 +77,40 @@ program.command('configure')
71
77
  result(saved, 'Configuration saved. Supply the key in the selected environment variable, then run doctor.');
72
78
  });
73
79
  program.command('init')
74
- .description('Connect an existing project and install agent MCP configuration and a usage skill')
80
+ .description('Connect through Console or existing credentials, then install agent MCP configuration and a usage skill')
81
+ .option('--connect', 'Select or create a project through account login; reuse saved project keys when available')
82
+ .option('--no-browser', 'Print the verification URL without opening a local browser (for SSH)')
75
83
  .option('--non-interactive', 'Require explicit agent/scope choices; never prompt')
76
84
  .option('--agents <names>', `Comma-separated ${agentNames} subset, or none`)
77
85
  .option('--scope <scope>', 'Agent configuration scope: project (current directory) or user')
78
86
  .option('--write-tools', 'Explicitly enable MCP write tools (default: read-only)')
79
- .addHelpText('after', '\nObtain endpoint, project and a project API key manually from https://console.lambdadb.ai.\nExport the key securely before running init; no key value is saved.\nAutomation example:\n lambdadb init --non-interactive --agents codex,claude,cursor --scope project --endpoint https://api.lambdadb.ai --project my-project --json')
87
+ .addHelpText('after', '\nBrowser setup: lambdadb init --connect (add --no-browser for SSH).\nThe browser handles signup/login and CLI approval. Select or create the project in your terminal.\nBrowser setup saves the project key only in an OS credential store. Account sessions and project keys are stored separately in the OS store; configuration files contain no secrets.\nManual/CI setup: obtain a project key in Console and export it securely; init saves only the environment-variable name.\nAutomation example:\n lambdadb init --non-interactive --agents codex,claude,cursor --scope project --endpoint https://api.lambdadb.ai --project my-project --json')
80
88
  .action(async (_opts, cmd) => {
81
89
  const data = await initialize(cmd.optsWithGlobals(), output);
82
90
  target = { endpoint: data.settings.endpoint, project: data.settings.project };
83
91
  result(data, 'Initialization complete. Authentication and collection-list access verified; search readiness is not verified.');
84
92
  });
93
+ program.command('login').description('Authorize account management in a browser and save a separate OS session')
94
+ .option('--no-browser', 'Print a URL usable on another device without opening a browser')
95
+ .action(async (_opts, cmd) => result(await login(cmd.optsWithGlobals(), output), 'Account login saved. Project connections and agent settings are unchanged.'));
96
+ program.command('logout').description('Revoke the saved account session and remove it locally; keep project connections')
97
+ .action(async (_opts, cmd) => { await logout(cmd.optsWithGlobals(), output); result({ loggedOut: true, projectKeysRevoked: false }, 'Account logged out. Project keys and agent connections are unchanged.'); });
98
+ program.command('orgs').description('Manage account Organizations').command('list')
99
+ .action(async (_opts, cmd) => result({ organizations: await organizations(cmd.optsWithGlobals(), output) }, 'Accessible Organizations.'));
100
+ const projectCommands = program.command('projects').description('List, create and select projects using the saved account session');
101
+ projectCommands.command('list').requiredOption('--org <uuid>', 'Organization ID')
102
+ .action(async (opts, cmd) => result({ projects: await projects(cmd.optsWithGlobals(), opts.org, output) }, 'Projects in the selected Organization.'));
103
+ projectCommands.command('regions').description('List available regions before project creation')
104
+ .action(async (_opts, cmd) => { const api = await management(cmd.optsWithGlobals(), output); result(await api.request('regions'), 'Project regions.'); });
105
+ projectCommands.command('create').option('--org <uuid>', 'Existing Organization ID').option('--default-org', 'Explicitly prepare the default Organization on submission')
106
+ .requiredOption('--name <name>', 'Project name').requiredOption('--region <region>', 'Region from projects regions')
107
+ .action(async (opts, cmd) => {
108
+ const created = await createProject(cmd.optsWithGlobals(), opts, output);
109
+ result(created, 'Project requested. Check projects list for ACTIVE status; creation does not establish search readiness.');
110
+ });
111
+ projectCommands.command('use').requiredOption('--org <uuid>', 'Organization ID').requiredOption('--project-id <uuid>', 'Project ID')
112
+ .option('--issue-key', 'Explicitly issue a new project key, including replacement of a saved connection')
113
+ .action(async (opts, cmd) => result(await useProject(cmd.optsWithGlobals(), opts.org, opts.projectId, !!opts.issueKey, output), 'CLI project selected. Agent configurations are unchanged.'));
85
114
  program.command('mcp')
86
115
  .description('Launch the existing stdio MCP package with runtime credential forwarding (used by init)')
87
116
  .option('--write-tools', 'Explicitly enable MCP write tools (default: read-only)')
@@ -96,6 +125,15 @@ program.command('mcp')
96
125
  }
97
126
  process.exitCode = await serveMcp(config, !!opts.writeTools);
98
127
  });
128
+ program.command('credentials').description('Manage local OS credential references').command('remove')
129
+ .description('Delete this connection’s local OS credential; keep metadata and do not revoke the server key')
130
+ .action(async (_opts, cmd) => {
131
+ const selected = await settings(cmd.optsWithGlobals());
132
+ if (!selected.credentialStore || !selected.credentialId)
133
+ throw new InputError('This connection uses an environment variable. Unset it in your shell or secret manager; revoke the project key separately in Console.');
134
+ await new CredentialVault().remove({ ...selected, ...credentialReference(selected.credentialStore, selected.credentialId) });
135
+ result({ credentialStore: selected.credentialStore, credentialKeyId: selected.credentialKeyId, credentialKeyName: selected.credentialKeyName, serverKeyRevoked: false }, 'Local credential removed. Connection references remain. Revoke the project key in Console if you no longer need it.');
136
+ });
99
137
  program.command('doctor')
100
138
  .description('Check configuration, authentication and project collection-list access')
101
139
  .action(async (_opts, cmd) => connected(cmd, async ({ client, options }) => {
@@ -243,7 +281,7 @@ catch (error) {
243
281
  output.json ||= process.argv.includes('--json');
244
282
  const failure = error instanceof CommanderError
245
283
  ? new InputError('Invalid or incomplete command. Run lambdadb --help or the command-specific --help.') : error;
246
- const unknownWrite = mutationStarted && !definitelyRejected(failure);
284
+ const unknownWrite = (mutationStarted && !definitelyRejected(failure)) || (failure instanceof ManagementError && ['write_outcome_unknown', 'issuance_unconfirmed'].includes(failure.code));
247
285
  const exitCode = isInputError(failure) ? 2 : unknownWrite ? 5 : 3;
248
286
  if (commandName === 'mcp') {
249
287
  const safe = describeError(failure);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAgB,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB;IAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACpG,IAAI,WAAW,GAAG,UAAU,CAAC;AAC7B,IAAI,MAA2C,CAAC;AAChD,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,yFAAyF,CAAC;KACtG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;KAC9F,MAAM,CAAC,QAAQ,EAAE,sEAAsE,CAAC;KACxF,MAAM,CAAC,kBAAkB,EAAE,kEAAkE,CAAC;KAC9F,MAAM,CAAC,kBAAkB,EAAE,uEAAuE,CAAC;KACnG,MAAM,CAAC,sBAAsB,EAAE,uEAAuE,CAAC;KACvG,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;KACjF,wBAAwB,CAAC,KAAK,CAAC;KAC/B,YAAY,EAAE;KACd,eAAe,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;KACvC,WAAW,CAAC,OAAO,EAAE,oUAAoU,CAAC,CAAC;AAE9V,SAAS,MAAM,CAAC,IAAa,EAAE,OAAe,EAAE,QAAQ,GAAG,CAAC;IAC1D,MAAM,QAAQ,GAAa,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACxG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC9B,CAAC;AAGD,KAAK,UAAU,SAAS,CAAC,OAAgB,EAAE,MAAuC;IAChF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC;QAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;YAAS,CAAC;QAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAAC,CAAC;AACrD,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACtE,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IACjD,iFAAiF;IACjF,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,KAAK;QAAE,WAAW,GAAG,KAAK,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IAC7C,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC;IAC/C,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO;QAAE,WAAW,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;AAC5G,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;KACzB,WAAW,CAAC,mFAAmF,CAAC;KAChG,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;IACpC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,eAAe,EAAa,CAAC,CAAC;IACnE,MAAM,CAAC,KAAK,EAAE,4FAA4F,CAAC,CAAC;AAC9G,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;KACpB,WAAW,CAAC,mFAAmF,CAAC;KAChG,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;KACjF,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,UAAU,kBAAkB,CAAC;KAC3E,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;KAC3F,MAAM,CAAC,eAAe,EAAE,wDAAwD,CAAC;KACjF,WAAW,CAAC,OAAO,EAAE,sUAAsU,CAAC;KAC5V,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;IACpC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC9E,MAAM,CAAC,IAAI,EAAE,gHAAgH,CAAC,CAAC;AACjI,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;KACnB,WAAW,CAAC,yFAAyF,CAAC;KACtG,MAAM,CAAC,eAAe,EAAE,wDAAwD,CAAC;KACjF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;IACpC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;IACnC,IAAI,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,iEAAiE,CAAC,CAAC;IACvG,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,MAAM,CAAC,SAAS,GAAG,EAAE,UAAU,MAAM,CAAC,SAAS,GAAG,EAAE,QAAQ,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACpH,MAAM,IAAI,UAAU,CAAC,4BAA4B,MAAM,CAAC,SAAS,6EAA6E,CAAC,CAAC;IAClJ,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;KACtB,WAAW,CAAC,wEAAwE,CAAC;KACrF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;IAClF,MAAM,CAAC,MAAM,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,4DAA4D,CAAC,CAAC;AACnH,CAAC,CAAC,CAAC,CAAC;AAEN,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,+CAA+C,CAAC,CAAC;AAChH,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACxB,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,CAAC;KAClD,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;KAC3D,MAAM,CAAC,OAAO,EAAE,iEAAiE,CAAC;KAClF,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,iBAAiB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjH,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;YACvG,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;KAC5B,WAAW,CAAC,oEAAoE,CAAC;KACjF,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;IAClF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,sEAAsE,CAAC,CAAC;AACnI,CAAC,CAAC,CAAC,CAAC;AAEN,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC1B,WAAW,CAAC,oDAAoD,CAAC;KACjE,cAAc,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KAC5D,cAAc,CAAC,uBAAuB,EAAE,qFAAqF,CAAC;KAC9H,WAAW,CAAC,OAAO,EAAE,sNAAsN,CAAC;KAC5O,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACtG,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,eAAe,GAAG,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACpG,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,oEAAoE,CAAC,CAAC;IAC7I,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC1B,WAAW,CAAC,sEAAsE,CAAC;KACnF,cAAc,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;KACjE,cAAc,CAAC,uBAAuB,EAAE,2EAA2E,CAAC;KACpH,WAAW,CAAC,OAAO,EAAE,0NAA0N,CAAC;KAChP,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,eAAe,GAAG,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACjH,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,oEAAoE,CAAC,CAAC;IAC7I,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC;AAC3F,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACnB,WAAW,CAAC,oGAAoG,CAAC;KACjH,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KACxD,cAAc,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;KAChF,cAAc,CAAC,eAAe,EAAE,uDAAuD,CAAC;KACxF,SAAS,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACxG,MAAM,CAAC,sBAAsB,EAAE,sCAAsC,EAAE,MAAM,CAAC;KAC9E,MAAM,CAAC,uBAAuB,EAAE,6DAA6D,CAAC;KAC9F,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;IAClC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3H,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/B,MAAM,CAAC,UAAU,CAAC,aAAa,IAAI,CAAC,MAAM,4BAA4B,OAAO,CAAC,MAAM,oBAAoB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACtH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE;YACjH,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,uBAAuB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzI,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7H,MAAM,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,wDAAwD,EAAE,QAAQ,CAAC,CAAC;QAC3H,IAAI,QAAQ;YAAE,MAAM,CAAC,UAAU,CAAC,oHAAoH,CAAC,CAAC;IACxJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KAClB,WAAW,CAAC,2FAA2F,CAAC;KACxG,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KACxD,cAAc,CAAC,mBAAmB,EAAE,qCAAqC,CAAC;KAC1E,cAAc,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACzE,MAAM,CAAC,mBAAmB,EAAE,4EAA4E,CAAC;KACzG,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAC5H,IAAI,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxH,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7D,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;SAC7G,EAAE,OAAO,CAAC,CAAC;QACZ,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,uBAAuB,CAAC,CAAC;IAClI,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;KACrB,WAAW,CAAC,mFAAmF,CAAC;KAChG,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KACxD,cAAc,CAAC,mBAAmB,EAAE,qEAAqE,CAAC;KAC1G,cAAc,CAAC,eAAe,EAAE,mHAAmH,CAAC;KACpJ,WAAW,CAAC,OAAO,EAAE,seAAse,CAAC;KAC5f,WAAW,CAAC,OAAO,EAAE,gaAAga,CAAC;KACtb,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACjD,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,YAAY,cAAc;YAC7C,CAAC,CAAC,IAAI,UAAU,CAAC,oFAAoF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjH,MAAM,YAAY,GAAG,eAAe,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;;YAAM,MAAM,CAAC,IAAI,CAAC;gBACjB,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM;gBACzD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;aAC9B,EAAE,YAAY,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACpG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAgB,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEnF,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB;IAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACpG,IAAI,WAAW,GAAG,UAAU,CAAC;AAC7B,IAAI,MAA2C,CAAC;AAChD,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,yFAAyF,CAAC;KACtG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;KAC9F,MAAM,CAAC,QAAQ,EAAE,sEAAsE,CAAC;KACxF,MAAM,CAAC,iBAAiB,EAAE,uFAAuF,CAAC;KAClH,MAAM,CAAC,kBAAkB,EAAE,kEAAkE,CAAC;KAC9F,MAAM,CAAC,kBAAkB,EAAE,uEAAuE,CAAC;KACnG,MAAM,CAAC,sBAAsB,EAAE,uEAAuE,CAAC;KACvG,MAAM,CAAC,4BAA4B,EAAE,0GAA0G,CAAC;KAChJ,MAAM,CAAC,wBAAwB,EAAE,oEAAoE,CAAC;KACtG,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,mBAAmB,EAAE,qGAAqG,CAAC;KAClI,wBAAwB,CAAC,KAAK,CAAC;KAC/B,YAAY,EAAE;KACd,eAAe,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;KACvC,WAAW,CAAC,OAAO,EAAE,oUAAoU,CAAC,CAAC;AAE9V,SAAS,MAAM,CAAC,IAAa,EAAE,OAAe,EAAE,QAAQ,GAAG,CAAC;IAC1D,MAAM,QAAQ,GAAa,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACxG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC9B,CAAC;AAGD,KAAK,UAAU,SAAS,CAAC,OAAgB,EAAE,MAAuC;IAChF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC;QAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;YAAS,CAAC;QAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAAC,CAAC;AACrD,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACtE,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IACjD,iFAAiF;IACjF,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,KAAK;QAAE,WAAW,GAAG,KAAK,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IAC7C,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC;IAC/C,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO;QAAE,WAAW,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;AAC5G,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;KACzB,WAAW,CAAC,mFAAmF,CAAC;KAChG,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;IACpC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,eAAe,EAAa,CAAC,CAAC;IACnE,MAAM,CAAC,KAAK,EAAE,4FAA4F,CAAC,CAAC;AAC9G,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;KACpB,WAAW,CAAC,yGAAyG,CAAC;KACtH,MAAM,CAAC,WAAW,EAAE,2FAA2F,CAAC;KAChH,MAAM,CAAC,cAAc,EAAE,sEAAsE,CAAC;KAC9F,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;KACjF,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,UAAU,kBAAkB,CAAC;KAC3E,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;KAC3F,MAAM,CAAC,eAAe,EAAE,wDAAwD,CAAC;KACjF,WAAW,CAAC,OAAO,EAAE,4nBAA4nB,CAAC;KAClpB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;IACpC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC9E,MAAM,CAAC,IAAI,EAAE,gHAAgH,CAAC,CAAC;AACjI,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0EAA0E,CAAC;KAC7G,MAAM,CAAC,cAAc,EAAE,gEAAgE,CAAC;KACxF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,EAAE,4EAA4E,CAAC,CAAC,CAAC;AAC3K,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,kFAAkF,CAAC;KACtH,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5N,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;KAChF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;AACrJ,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,kEAAkE,CAAC,CAAC;AACpI,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,iBAAiB,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,wCAAwC,CAAC,CAAC,CAAC;AACjK,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC;KAC7F,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE,GAAG,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrK,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,2DAA2D,CAAC;KACtK,cAAc,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,cAAc,CAAC,mBAAmB,EAAE,8BAA8B,CAAC;KACnH,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACzE,MAAM,CAAC,OAAO,EAAE,yGAAyG,CAAC,CAAC;AAC7H,CAAC,CAAC,CAAC;AACL,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC;KACjI,MAAM,CAAC,aAAa,EAAE,iFAAiF,CAAC;KACxG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,2DAA2D,CAAC,CAAC,CAAC;AAEzM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;KACnB,WAAW,CAAC,yFAAyF,CAAC;KACtG,MAAM,CAAC,eAAe,EAAE,wDAAwD,CAAC;KACjF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;IACpC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;IACnC,IAAI,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,iEAAiE,CAAC,CAAC;IACvG,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,MAAM,CAAC,SAAS,GAAG,EAAE,UAAU,MAAM,CAAC,SAAS,GAAG,EAAE,QAAQ,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACpH,MAAM,IAAI,UAAU,CAAC,4BAA4B,MAAM,CAAC,SAAS,6EAA6E,CAAC,CAAC;IAClJ,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;KAClG,WAAW,CAAC,8FAA8F,CAAC;KAC3G,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;IACpC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,YAAY;QAAE,MAAM,IAAI,UAAU,CAAC,uIAAuI,CAAC,CAAC;IACvN,MAAM,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7H,MAAM,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,EAAE,EACrK,qHAAqH,CAAC,CAAC;AAC3H,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;KACtB,WAAW,CAAC,wEAAwE,CAAC;KACrF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;IAClF,MAAM,CAAC,MAAM,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,4DAA4D,CAAC,CAAC;AACnH,CAAC,CAAC,CAAC,CAAC;AAEN,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,+CAA+C,CAAC,CAAC;AAChH,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACxB,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,CAAC;KAClD,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;KAC3D,MAAM,CAAC,OAAO,EAAE,iEAAiE,CAAC;KAClF,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,iBAAiB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjH,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;YACvG,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;KAC5B,WAAW,CAAC,oEAAoE,CAAC;KACjF,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;IAClF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,sEAAsE,CAAC,CAAC;AACnI,CAAC,CAAC,CAAC,CAAC;AAEN,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC1B,WAAW,CAAC,oDAAoD,CAAC;KACjE,cAAc,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KAC5D,cAAc,CAAC,uBAAuB,EAAE,qFAAqF,CAAC;KAC9H,WAAW,CAAC,OAAO,EAAE,sNAAsN,CAAC;KAC5O,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACtG,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,eAAe,GAAG,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACpG,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,oEAAoE,CAAC,CAAC;IAC7I,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC1B,WAAW,CAAC,sEAAsE,CAAC;KACnF,cAAc,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;KACjE,cAAc,CAAC,uBAAuB,EAAE,2EAA2E,CAAC;KACpH,WAAW,CAAC,OAAO,EAAE,0NAA0N,CAAC;KAChP,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,eAAe,GAAG,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACjH,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,oEAAoE,CAAC,CAAC;IAC7I,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC;AAC3F,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACnB,WAAW,CAAC,oGAAoG,CAAC;KACjH,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KACxD,cAAc,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;KAChF,cAAc,CAAC,eAAe,EAAE,uDAAuD,CAAC;KACxF,SAAS,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACxG,MAAM,CAAC,sBAAsB,EAAE,sCAAsC,EAAE,MAAM,CAAC;KAC9E,MAAM,CAAC,uBAAuB,EAAE,6DAA6D,CAAC;KAC9F,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;IAClC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3H,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/B,MAAM,CAAC,UAAU,CAAC,aAAa,IAAI,CAAC,MAAM,4BAA4B,OAAO,CAAC,MAAM,oBAAoB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACtH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE;YACjH,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,uBAAuB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzI,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7H,MAAM,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,wDAAwD,EAAE,QAAQ,CAAC,CAAC;QAC3H,IAAI,QAAQ;YAAE,MAAM,CAAC,UAAU,CAAC,oHAAoH,CAAC,CAAC;IACxJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KAClB,WAAW,CAAC,2FAA2F,CAAC;KACxG,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KACxD,cAAc,CAAC,mBAAmB,EAAE,qCAAqC,CAAC;KAC1E,cAAc,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACzE,MAAM,CAAC,mBAAmB,EAAE,4EAA4E,CAAC;KACzG,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAC5H,IAAI,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxH,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7D,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;SAC7G,EAAE,OAAO,CAAC,CAAC;QACZ,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,uBAAuB,CAAC,CAAC;IAClI,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;KACrB,WAAW,CAAC,mFAAmF,CAAC;KAChG,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KACxD,cAAc,CAAC,mBAAmB,EAAE,qEAAqE,CAAC;KAC1G,cAAc,CAAC,eAAe,EAAE,mHAAmH,CAAC;KACpJ,WAAW,CAAC,OAAO,EAAE,seAAse,CAAC;KAC5f,WAAW,CAAC,OAAO,EAAE,gaAAga,CAAC;KACtb,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACjD,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,YAAY,cAAc;YAC7C,CAAC,CAAC,IAAI,UAAU,CAAC,oFAAoF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjH,MAAM,YAAY,GAAG,CAAC,eAAe,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,YAAY,eAAe,IAAI,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3L,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;;YAAM,MAAM,CAAC,IAAI,CAAC;gBACjB,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM;gBACzD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;aAC9B,EAAE,YAAY,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACpG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,CAAC;AACH,CAAC"}
package/dist/config.d.ts CHANGED
@@ -1,9 +1,13 @@
1
+ import { type CredentialReference } from './credentials.js';
1
2
  export type Settings = {
2
3
  endpoint?: string;
3
4
  project?: string;
4
5
  apiKeyEnv?: string;
5
- };
6
- export type Config = Required<Settings> & {
6
+ credentialKeyId?: string;
7
+ credentialKeyName?: string;
8
+ } & Partial<CredentialReference>;
9
+ export type SelectedSettings = Required<Pick<Settings, 'endpoint' | 'project' | 'apiKeyEnv'>> & Partial<CredentialReference> & Pick<Settings, 'credentialKeyId' | 'credentialKeyName'>;
10
+ export type Config = SelectedSettings & {
7
11
  apiKey: string;
8
12
  timeoutMs: number;
9
13
  };
@@ -11,14 +15,16 @@ export type Options = Settings & {
11
15
  config?: string;
12
16
  timeoutMs?: string;
13
17
  };
18
+ export declare function timeoutMs(options: Options): number;
14
19
  export declare function configPath(options: Options): string;
15
20
  export declare function endpoint(value: string): string;
16
21
  export declare function name(value: unknown, label: string): string;
17
22
  export declare function integer(value: string, label: string, min: number, max: number): number;
18
23
  export declare function loadSettings(path: string, explicitlySelected?: boolean): Promise<Settings>;
19
- export declare function settings(options: Options, creating?: boolean): Promise<Required<Settings>>;
24
+ export declare function settings(options: Options, creating?: boolean): Promise<SelectedSettings>;
20
25
  export declare function resolveConfig(options: Options, creating?: boolean): Promise<Config>;
21
26
  export declare function saveSettings(options: Options): Promise<{
22
27
  path: string;
23
- settings: Required<Settings>;
28
+ settings: SelectedSettings;
24
29
  }>;
30
+ export declare function fileIdentity(path: string): Promise<string>;
package/dist/config.js CHANGED
@@ -1,8 +1,12 @@
1
1
  import { homedir } from 'node:os';
2
- import { dirname, join, resolve } from 'node:path';
3
- import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
2
+ import { basename, dirname, join, resolve } from 'node:path';
3
+ import { lstat, mkdir, readFile, realpath, rename, rm, writeFile } from 'node:fs/promises';
4
4
  import { randomUUID } from 'node:crypto';
5
+ import { CredentialVault, credentialReference } from './credentials.js';
5
6
  import { InputError } from './errors.js';
7
+ export function timeoutMs(options) {
8
+ return integer(options.timeoutMs ?? process.env.LAMBDADB_TIMEOUT_MS ?? '30000', 'Timeout', 1, 3600000);
9
+ }
6
10
  export function configPath(options) {
7
11
  return resolve(options.config ?? process.env.LAMBDADB_CONFIG
8
12
  ?? join(process.env.XDG_CONFIG_HOME ?? join(homedir(), '.config'), 'lambdadb', 'config.json'));
@@ -52,13 +56,19 @@ export async function loadSettings(path, explicitlySelected = false) {
52
56
  try {
53
57
  const value = JSON.parse(text);
54
58
  if (!value || typeof value !== 'object' || Array.isArray(value)
55
- || Object.keys(value).some(k => !['endpoint', 'project', 'apiKeyEnv'].includes(k))
59
+ || Object.keys(value).some(k => !['endpoint', 'project', 'apiKeyEnv', 'credentialStore', 'credentialId', 'credentialKeyId', 'credentialKeyName'].includes(k))
56
60
  || Object.values(value).some(v => typeof v !== 'string'))
57
61
  throw new Error();
62
+ for (const key of ['credentialKeyId', 'credentialKeyName']) {
63
+ if (value[key] !== undefined && (!value.credentialStore || !/^[a-zA-Z0-9_-]{1,128}$/.test(value[key])))
64
+ throw new Error();
65
+ }
66
+ if (value.credentialStore !== undefined || value.credentialId !== undefined)
67
+ credentialReference(value.credentialStore, value.credentialId);
58
68
  return value;
59
69
  }
60
70
  catch {
61
- throw new InputError('Configuration must be a JSON object with only endpoint, project and apiKeyEnv strings. Never store an API key in it.');
71
+ throw new InputError('Configuration must be a JSON object with endpoint, project, apiKeyEnv and optional credentialStore/credentialId/credentialKeyId/credentialKeyName strings. Never store an API key in it.');
62
72
  }
63
73
  }
64
74
  export async function settings(options, creating = false) {
@@ -70,19 +80,29 @@ export async function settings(options, creating = false) {
70
80
  // Project names are encoded as a single SDK URL segment, with no implicit playground fallback.
71
81
  if (!/^[a-zA-Z0-9_-]+$/.test(project))
72
82
  throw new InputError('Project must contain only letters, digits, underscores or hyphens.');
83
+ const stored = options.credentialStore || options.credentialId ? credentialReference(options.credentialStore, options.credentialId) :
84
+ saved.credentialStore ? credentialReference(saved.credentialStore, saved.credentialId) : undefined;
85
+ const previousIdentity = stored?.credentialId === saved.credentialId ? saved : {};
86
+ const identity = {
87
+ ...(options.credentialKeyId ?? previousIdentity.credentialKeyId ? { credentialKeyId: options.credentialKeyId ?? previousIdentity.credentialKeyId } : {}),
88
+ ...(options.credentialKeyName ?? previousIdentity.credentialKeyName ? { credentialKeyName: options.credentialKeyName ?? previousIdentity.credentialKeyName } : {}),
89
+ };
73
90
  return {
91
+ ...(stored && (options.credentialStore || !(options.apiKeyEnv ?? process.env.LAMBDADB_API_KEY_ENV)) ? { ...stored, ...identity } : {}),
74
92
  endpoint: endpoint(selectedEndpoint), project,
75
93
  apiKeyEnv: environmentName(options.apiKeyEnv ?? process.env.LAMBDADB_API_KEY_ENV ?? saved.apiKeyEnv ?? 'LAMBDADB_API_KEY'),
76
94
  };
77
95
  }
78
96
  export async function resolveConfig(options, creating = false) {
79
97
  const selected = await settings(options, creating);
80
- const apiKey = process.env[selected.apiKeyEnv];
98
+ const apiKey = selected.credentialStore && selected.credentialId
99
+ ? await new CredentialVault().read({ ...selected, ...credentialReference(selected.credentialStore, selected.credentialId) })
100
+ : process.env[selected.apiKeyEnv];
81
101
  if (!apiKey || !apiKey.trim() || /[\r\n]/.test(apiKey))
82
102
  throw new InputError('The selected API-key environment variable is missing or invalid. Supply it through your shell or CI secret manager.');
83
103
  return {
84
104
  ...selected, apiKey,
85
- timeoutMs: integer(options.timeoutMs ?? process.env.LAMBDADB_TIMEOUT_MS ?? '30000', 'Timeout', 1, 3600000),
105
+ timeoutMs: timeoutMs(options),
86
106
  };
87
107
  }
88
108
  export async function saveSettings(options) {
@@ -102,4 +122,21 @@ export async function saveSettings(options) {
102
122
  }
103
123
  return { path, settings: value };
104
124
  }
125
+ export async function fileIdentity(path) {
126
+ try {
127
+ return await realpath(path);
128
+ }
129
+ catch (error) {
130
+ if (error.code !== 'ENOENT')
131
+ throw new InputError(`Cannot resolve configuration path: ${path}.`);
132
+ const info = await lstat(path).catch(error => {
133
+ if (error.code === 'ENOENT')
134
+ return undefined;
135
+ throw new InputError(`Cannot resolve configuration path: ${path}.`);
136
+ });
137
+ if (info?.isSymbolicLink())
138
+ throw new InputError(`Configuration symbolic link has a missing target: ${path}. Restore its target before rerunning init.`);
139
+ return join(await fileIdentity(dirname(path)), basename(path));
140
+ }
141
+ }
105
142
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;WACvD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;IAAC,CAAC;IAC3G,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5E,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC;WACrE,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QACpF,MAAM,IAAI,UAAU,CAAC,2HAA2H,CAAC,CAAC;IACpJ,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,KAAc,EAAE,KAAa;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,6DAA6D,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACnH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW;IAC5E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;QAC/G,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,4BAA4B,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,kBAAkB,GAAG,KAAK;IACzE,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QAAC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;IAC5C,OAAO,KAAK,EAAE,CAAC;QACb,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,kBAAkB;YAAE,OAAO,EAAE,CAAC;QACzF,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;eAC1D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;eAC/E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,EAAE,CAAC;QAC9E,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,UAAU,CAAC,sHAAsH,CAAC,CAAC;IAAC,CAAC;AAC3J,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAgB,EAAE,QAAQ,GAAG,KAAK;IAC/D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IACtH,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK,CAAC,QAAQ,CAAC;IAC7F,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IACjF,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,UAAU,CAAC,iGAAiG,CAAC,CAAC;IAC3J,+FAA+F;IAC/F,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,oEAAoE,CAAC,CAAC;IAClI,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO;QAC7C,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,KAAK,CAAC,SAAS,IAAI,kBAAkB,CAAC;KAC3H,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAgB,EAAE,QAAQ,GAAG,KAAK;IACpE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,qHAAqH,CAAC,CAAC;IACpM,OAAO;QACL,GAAG,QAAQ,EAAE,MAAM;QACnB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC;KAC3G,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAgB;IACjD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE,MAAM,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1F,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,UAAU,CAAC,+EAA+E,CAAC,CAAC;IAAC,CAAC;YAC1G,CAAC;QAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAAC,CAAC;IAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export declare const credentialStores: readonly ["keychain", "windows", "secret-service", "keyutils"];
2
+ export type CredentialStore = (typeof credentialStores)[number];
3
+ export type CredentialReference = {
4
+ credentialStore: CredentialStore;
5
+ credentialId: string;
6
+ };
7
+ export type CredentialTarget = {
8
+ endpoint: string;
9
+ project: string;
10
+ } & CredentialReference;
11
+ type Entry = {
12
+ setSecret(value: Uint8Array, signal?: AbortSignal): Promise<void>;
13
+ getSecret(signal?: AbortSignal): Promise<number[] | null>;
14
+ deleteCredential(signal?: AbortSignal): Promise<boolean>;
15
+ };
16
+ export type EntryFactory = (service: string, id: string, store: CredentialStore) => Promise<Entry>;
17
+ export declare function credentialReference(store: unknown, id: unknown): CredentialReference;
18
+ export declare class CredentialVault {
19
+ private factory;
20
+ private platform;
21
+ private purpose;
22
+ constructor(factory?: EntryFactory, platform?: NodeJS.Platform, purpose?: 'project' | 'account');
23
+ private entry;
24
+ read(target: CredentialTarget): Promise<string>;
25
+ save(target: CredentialTarget, key: string): Promise<void>;
26
+ remove(target: CredentialTarget): Promise<void>;
27
+ select(requested?: string): Promise<CredentialStore>;
28
+ }
29
+ export {};
@@ -0,0 +1,116 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { InputError } from './errors.js';
3
+ export const credentialStores = ['keychain', 'windows', 'secret-service', 'keyutils'];
4
+ const nativeEntry = async (service, id, store) => {
5
+ const { AsyncEntry } = await import('@napi-rs/keyring');
6
+ return new AsyncEntry(service, id, store === 'secret-service' || store === 'keyutils' ? { linux: { store } } : undefined);
7
+ };
8
+ export function credentialReference(store, id) {
9
+ if (!credentialStores.includes(store) ||
10
+ typeof id !== 'string' ||
11
+ !/^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$/.test(id)) {
12
+ throw new InputError('Credential reference must contain a supported store and UUID. Never put a key value in configuration.');
13
+ }
14
+ return { credentialStore: store, credentialId: id };
15
+ }
16
+ function supported(store, platform) {
17
+ return platform === 'darwin'
18
+ ? store === 'keychain'
19
+ : platform === 'win32'
20
+ ? store === 'windows'
21
+ : platform === 'linux' && ['secret-service', 'keyutils'].includes(store);
22
+ }
23
+ export class CredentialVault {
24
+ factory;
25
+ platform;
26
+ purpose;
27
+ constructor(factory = nativeEntry, platform = process.platform, purpose = 'project') {
28
+ this.factory = factory;
29
+ this.platform = platform;
30
+ this.purpose = purpose;
31
+ }
32
+ async entry(target) {
33
+ credentialReference(target.credentialStore, target.credentialId);
34
+ if (!supported(target.credentialStore, this.platform))
35
+ throw new InputError('This credential reference belongs to a different OS. Use environment-variable setup or connect on this OS.');
36
+ const identity = createHash('sha256')
37
+ .update(JSON.stringify([target.endpoint, target.project]))
38
+ .digest('hex');
39
+ return this.factory(`${this.purpose === 'account' ? 'ai.lambdadb.cli.account.v1' : 'ai.lambdadb.cli.v1'}:${identity}`, target.credentialId, target.credentialStore);
40
+ }
41
+ async read(target) {
42
+ try {
43
+ const value = await (await this.entry(target)).getSecret(AbortSignal.timeout(15_000));
44
+ if (value === null)
45
+ throw new Error();
46
+ const secret = Buffer.from(value).toString('utf8');
47
+ if (!secret.trim() || /[\r\n]/.test(secret))
48
+ throw new Error();
49
+ return secret;
50
+ }
51
+ catch {
52
+ throw new InputError(`Cannot read the saved ${target.credentialStore} credential. Unlock the store or restore the same OS user session. Kernel keys can expire or disappear after reboot. No new key was issued. Reconnect explicitly with init --connect, or use --api-key-env NAME. Review existing CLI keys in Console before reconnecting.`);
53
+ }
54
+ }
55
+ async save(target, key) {
56
+ if (!key.trim() || /[\r\n]/.test(key) || (this.platform === 'win32' && Buffer.byteLength(key) > 2560))
57
+ throw new InputError('The project key is invalid or exceeds the OS credential-store size limit.');
58
+ let entry;
59
+ let owned = false;
60
+ try {
61
+ entry = await this.entry(target);
62
+ // Every new connection uses a fresh slot. Never overwrite an existing key.
63
+ if ((await entry.getSecret(AbortSignal.timeout(15_000))) !== null)
64
+ throw new Error();
65
+ owned = true;
66
+ await entry.setSecret(Buffer.from(key), AbortSignal.timeout(15_000));
67
+ const saved = await entry.getSecret(AbortSignal.timeout(15_000));
68
+ if (saved === null || !Buffer.from(saved).equals(Buffer.from(key)))
69
+ throw new Error();
70
+ }
71
+ catch {
72
+ if (owned && entry)
73
+ await entry.deleteCredential(AbortSignal.timeout(15_000)).catch(() => { });
74
+ throw new InputError('Cannot verify OS credential storage. No plaintext fallback was used. Check the store, review the named CLI key in Console, and retry explicitly.');
75
+ }
76
+ }
77
+ async remove(target) {
78
+ try {
79
+ await (await this.entry(target)).deleteCredential(AbortSignal.timeout(15_000));
80
+ }
81
+ catch {
82
+ throw new InputError('Could not remove the local credential. Unlock the OS store and retry. Local deletion never revokes the server key.');
83
+ }
84
+ }
85
+ async select(requested = 'auto') {
86
+ const choices = requested === 'auto'
87
+ ? this.platform === 'darwin'
88
+ ? ['keychain']
89
+ : this.platform === 'win32'
90
+ ? ['windows']
91
+ : this.platform === 'linux'
92
+ ? ['secret-service', 'keyutils']
93
+ : []
94
+ : credentialStores.filter((store) => store === requested);
95
+ for (const store of choices) {
96
+ if (!supported(store, this.platform))
97
+ continue;
98
+ const probe = {
99
+ endpoint: 'https://credential-probe.invalid',
100
+ project: 'probe',
101
+ credentialStore: store,
102
+ credentialId: randomUUID(),
103
+ };
104
+ try {
105
+ await this.save(probe, randomUUID());
106
+ await this.remove(probe);
107
+ return store;
108
+ }
109
+ catch {
110
+ /* Only a new connection may try another backend. */
111
+ }
112
+ }
113
+ throw new InputError('No usable OS credential store. On Linux, unlock Secret Service or enable kernel keyutils. Otherwise obtain a key in Console and use init --api-key-env NAME with the key exported securely. No key was requested.');
114
+ }
115
+ }
116
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Output } from './output.js';
2
+ export declare function openBrowser(url: string, output: Output): void;
3
+ export declare function projectAuthorization(v: Record<string, unknown>, output: Output, fallbackName: string): {
4
+ endpoint: string;
5
+ project: string;
6
+ apiKey: string;
7
+ credentialKeyId: string;
8
+ credentialKeyName: string;
9
+ };
10
+ export declare function authorizeAccount(apiUrl: string, browser: boolean, output: Output, signal: AbortSignal, requestTimeoutMs?: number): Promise<{
11
+ token: string;
12
+ memberId: string;
13
+ email: string;
14
+ expiresAt: string;
15
+ consoleUrl: string;
16
+ }>;