@eide/foir-cli 0.1.22 → 0.1.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 (82) hide show
  1. package/dist/auth/credentials.d.ts +10 -8
  2. package/dist/auth/credentials.d.ts.map +1 -1
  3. package/dist/auth/credentials.js +72 -12
  4. package/dist/cli.js +6 -0
  5. package/dist/codegen/fetch-customer-profile-schema.d.ts.map +1 -1
  6. package/dist/codegen/fetch-customer-profile-schema.js +4 -4
  7. package/dist/codegen/fetch-models.d.ts.map +1 -1
  8. package/dist/codegen/fetch-models.js +7 -7
  9. package/dist/codegen/field-mapping.d.ts.map +1 -1
  10. package/dist/codegen/field-mapping.js +1 -2
  11. package/dist/codegen/generators/static-documents.d.ts.map +1 -1
  12. package/dist/codegen/generators/static-documents.js +31 -29
  13. package/dist/codegen/generators/typed-operations.d.ts.map +1 -1
  14. package/dist/commands/api-keys.d.ts.map +1 -1
  15. package/dist/commands/api-keys.js +5 -5
  16. package/dist/commands/auth-config.d.ts +4 -0
  17. package/dist/commands/auth-config.d.ts.map +1 -0
  18. package/dist/commands/auth-config.js +37 -0
  19. package/dist/commands/auth-providers.d.ts.map +1 -1
  20. package/dist/commands/auth-providers.js +6 -6
  21. package/dist/commands/context.d.ts.map +1 -1
  22. package/dist/commands/context.js +7 -8
  23. package/dist/commands/customer-profiles.d.ts.map +1 -1
  24. package/dist/commands/customer-profiles.js +5 -5
  25. package/dist/commands/customers.d.ts.map +1 -1
  26. package/dist/commands/customers.js +6 -6
  27. package/dist/commands/embeddings.d.ts +4 -0
  28. package/dist/commands/embeddings.d.ts.map +1 -0
  29. package/dist/commands/embeddings.js +139 -0
  30. package/dist/commands/experiments.d.ts.map +1 -1
  31. package/dist/commands/experiments.js +12 -12
  32. package/dist/commands/extensions.d.ts.map +1 -1
  33. package/dist/commands/extensions.js +6 -6
  34. package/dist/commands/files.d.ts.map +1 -1
  35. package/dist/commands/files.js +8 -8
  36. package/dist/commands/hooks.d.ts +4 -0
  37. package/dist/commands/hooks.d.ts.map +1 -0
  38. package/dist/commands/hooks.js +182 -0
  39. package/dist/commands/locales.d.ts.map +1 -1
  40. package/dist/commands/locales.js +18 -13
  41. package/dist/commands/models.d.ts.map +1 -1
  42. package/dist/commands/models.js +11 -11
  43. package/dist/commands/notes.d.ts.map +1 -1
  44. package/dist/commands/notes.js +18 -8
  45. package/dist/commands/notifications.d.ts.map +1 -1
  46. package/dist/commands/notifications.js +4 -4
  47. package/dist/commands/operations.d.ts.map +1 -1
  48. package/dist/commands/operations.js +126 -12
  49. package/dist/commands/pull.d.ts.map +1 -1
  50. package/dist/commands/pull.js +2 -2
  51. package/dist/commands/records.d.ts.map +1 -1
  52. package/dist/commands/records.js +32 -20
  53. package/dist/commands/schedules.d.ts.map +1 -1
  54. package/dist/commands/schedules.js +9 -9
  55. package/dist/commands/search.d.ts.map +1 -1
  56. package/dist/commands/search.js +2 -2
  57. package/dist/commands/segments.d.ts.map +1 -1
  58. package/dist/commands/segments.js +9 -9
  59. package/dist/commands/select-project.d.ts.map +1 -1
  60. package/dist/commands/select-project.js +8 -9
  61. package/dist/commands/settings.d.ts.map +1 -1
  62. package/dist/commands/settings.js +8 -8
  63. package/dist/commands/variant-catalog.d.ts.map +1 -1
  64. package/dist/commands/variant-catalog.js +7 -7
  65. package/dist/commands/whoami.d.ts.map +1 -1
  66. package/dist/commands/whoami.js +9 -8
  67. package/dist/config/pull-config.js +2 -2
  68. package/dist/config/types.d.ts +1 -1
  69. package/dist/config/types.d.ts.map +1 -1
  70. package/dist/graphql/generated.d.ts +8134 -0
  71. package/dist/graphql/generated.d.ts.map +1 -0
  72. package/dist/graphql/generated.js +133 -0
  73. package/dist/lib/client.d.ts +1 -0
  74. package/dist/lib/client.d.ts.map +1 -1
  75. package/dist/lib/client.js +10 -7
  76. package/dist/lib/config.js +1 -1
  77. package/dist/lib/errors.d.ts.map +1 -1
  78. package/dist/lib/errors.js +11 -0
  79. package/package.json +32 -10
  80. package/dist/graphql/queries.d.ts +0 -115
  81. package/dist/graphql/queries.d.ts.map +0 -1
  82. package/dist/graphql/queries.js +0 -459
@@ -7,23 +7,25 @@ export interface StoredCredentials {
7
7
  email: string;
8
8
  name: string;
9
9
  };
10
- selectedProject?: {
11
- id: string;
12
- name: string;
13
- tenantId: string;
14
- apiKey?: string;
15
- apiKeyId?: string;
16
- };
17
10
  }
18
11
  export declare function getCredentialsDir(): string;
19
12
  export declare function getCredentialsPath(): string;
20
13
  export declare function getCredentials(): Promise<StoredCredentials | null>;
21
14
  export declare function writeCredentials(credentials: StoredCredentials): Promise<void>;
22
- export declare function updateCredentials(updates: Partial<StoredCredentials>): Promise<void>;
23
15
  export declare function deleteCredentials(): Promise<void>;
24
16
  export declare function isTokenExpired(credentials: StoredCredentials): boolean;
25
17
  export declare function getValidCredentials(refreshFn?: (refreshToken: string) => Promise<{
26
18
  accessToken: string;
27
19
  expiresAt: string;
28
20
  }>): Promise<StoredCredentials | null>;
21
+ export interface ProjectContext {
22
+ id: string;
23
+ name: string;
24
+ tenantId: string;
25
+ apiKey?: string;
26
+ apiKeyId?: string;
27
+ }
28
+ export declare function getProjectContext(): Promise<ProjectContext | null>;
29
+ export declare function writeProjectContext(project: ProjectContext): Promise<void>;
30
+ export declare function deleteProjectContext(): Promise<void>;
29
31
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,eAAe,CAAC,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAaD,wBAAsB,cAAc,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAUxE;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQvD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAItE;AAED,wBAAsB,mBAAmB,CACvC,SAAS,CAAC,EAAE,CACV,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GACvD,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAoBnC"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAYD,wBAAsB,cAAc,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAUxE;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQvD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAItE;AAED,wBAAsB,mBAAmB,CACvC,SAAS,CAAC,EAAE,CACV,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GACvD,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAoBnC;AAMD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA4CD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAUxE;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ1D"}
@@ -1,5 +1,5 @@
1
- import { promises as fs } from 'fs';
2
- import { join } from 'path';
1
+ import { promises as fs, statSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
3
  import { homedir } from 'os';
4
4
  export function getCredentialsDir() {
5
5
  return join(homedir(), '.foir');
@@ -7,8 +7,7 @@ export function getCredentialsDir() {
7
7
  export function getCredentialsPath() {
8
8
  return join(getCredentialsDir(), 'credentials.json');
9
9
  }
10
- async function ensureCredentialsDir() {
11
- const dir = getCredentialsDir();
10
+ async function ensureDir(dir) {
12
11
  try {
13
12
  await fs.mkdir(dir, { recursive: true, mode: 0o700 });
14
13
  }
@@ -31,19 +30,12 @@ export async function getCredentials() {
31
30
  }
32
31
  }
33
32
  export async function writeCredentials(credentials) {
34
- await ensureCredentialsDir();
33
+ await ensureDir(getCredentialsDir());
35
34
  const path = getCredentialsPath();
36
35
  await fs.writeFile(path, JSON.stringify(credentials, null, 2), {
37
36
  mode: 0o600,
38
37
  });
39
38
  }
40
- export async function updateCredentials(updates) {
41
- const existing = await getCredentials();
42
- if (!existing) {
43
- throw new Error('No credentials found. Run `foir login` first.');
44
- }
45
- await writeCredentials({ ...existing, ...updates });
46
- }
47
39
  export async function deleteCredentials() {
48
40
  try {
49
41
  await fs.unlink(getCredentialsPath());
@@ -77,3 +69,71 @@ export async function getValidCredentials(refreshFn) {
77
69
  }
78
70
  return credentials;
79
71
  }
72
+ const REPO_ROOT_MARKERS = [
73
+ '.git',
74
+ 'foir.config.ts',
75
+ '.foirrc.ts',
76
+ 'foir.config.js',
77
+ '.foirrc.js',
78
+ 'foir.config.mjs',
79
+ '.foirrc.mjs',
80
+ ];
81
+ /**
82
+ * Walk up from cwd looking for markers that indicate the repo root.
83
+ * Returns cwd as fallback if no marker is found.
84
+ */
85
+ function findRepoRoot(from = process.cwd()) {
86
+ let dir = from;
87
+ while (true) {
88
+ for (const marker of REPO_ROOT_MARKERS) {
89
+ try {
90
+ statSync(join(dir, marker));
91
+ return dir;
92
+ }
93
+ catch {
94
+ // not found, continue
95
+ }
96
+ }
97
+ const parent = dirname(dir);
98
+ if (parent === dir) {
99
+ return from; // filesystem root reached, fallback to cwd
100
+ }
101
+ dir = parent;
102
+ }
103
+ }
104
+ function getProjectContextDir() {
105
+ return join(findRepoRoot(), '.foir');
106
+ }
107
+ function getProjectContextPath() {
108
+ return join(getProjectContextDir(), 'project.json');
109
+ }
110
+ export async function getProjectContext() {
111
+ try {
112
+ const content = await fs.readFile(getProjectContextPath(), 'utf-8');
113
+ return JSON.parse(content);
114
+ }
115
+ catch (error) {
116
+ if (error.code === 'ENOENT') {
117
+ return null;
118
+ }
119
+ throw error;
120
+ }
121
+ }
122
+ export async function writeProjectContext(project) {
123
+ const dir = getProjectContextDir();
124
+ await ensureDir(dir);
125
+ const filePath = getProjectContextPath();
126
+ await fs.writeFile(filePath, JSON.stringify(project, null, 2), {
127
+ mode: 0o600,
128
+ });
129
+ }
130
+ export async function deleteProjectContext() {
131
+ try {
132
+ await fs.unlink(getProjectContextPath());
133
+ }
134
+ catch (error) {
135
+ if (error.code !== 'ENOENT') {
136
+ throw error;
137
+ }
138
+ }
139
+ }
package/dist/cli.js CHANGED
@@ -27,6 +27,7 @@ import { registerApiKeysCommands } from './commands/api-keys.js';
27
27
  import { registerAuthProvidersCommands } from './commands/auth-providers.js';
28
28
  import { registerExtensionsCommands } from './commands/extensions.js';
29
29
  import { registerOperationsCommands } from './commands/operations.js';
30
+ import { registerHooksCommands } from './commands/hooks.js';
30
31
  import { registerSchedulesCommands } from './commands/schedules.js';
31
32
  import { registerMediaCommands } from './commands/media.js';
32
33
  import { registerContextCommands } from './commands/context.js';
@@ -35,6 +36,8 @@ import { registerLocalesCommands } from './commands/locales.js';
35
36
  import { registerFilesCommands } from './commands/files.js';
36
37
  import { registerNotesCommands } from './commands/notes.js';
37
38
  import { registerVariantCatalogCommands } from './commands/variant-catalog.js';
39
+ import { registerAuthConfigCommands } from './commands/auth-config.js';
40
+ import { registerEmbeddingsCommands } from './commands/embeddings.js';
38
41
  import { registerPullCommand } from './commands/pull.js';
39
42
  import { registerCreateExtensionCommand } from './commands/create-extension.js';
40
43
  const program = new Command();
@@ -72,6 +75,7 @@ registerApiKeysCommands(program, getGlobalOpts);
72
75
  registerAuthProvidersCommands(program, getGlobalOpts);
73
76
  registerExtensionsCommands(program, getGlobalOpts);
74
77
  registerOperationsCommands(program, getGlobalOpts);
78
+ registerHooksCommands(program, getGlobalOpts);
75
79
  registerSchedulesCommands(program, getGlobalOpts);
76
80
  registerMediaCommands(program, getGlobalOpts);
77
81
  registerContextCommands(program, getGlobalOpts);
@@ -80,6 +84,8 @@ registerLocalesCommands(program, getGlobalOpts);
80
84
  registerFilesCommands(program, getGlobalOpts);
81
85
  registerNotesCommands(program, getGlobalOpts);
82
86
  registerVariantCatalogCommands(program, getGlobalOpts);
87
+ registerAuthConfigCommands(program, getGlobalOpts);
88
+ registerEmbeddingsCommands(program, getGlobalOpts);
83
89
  // Codegen
84
90
  registerPullCommand(program, getGlobalOpts);
85
91
  // Scaffolding
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-customer-profile-schema.d.ts","sourceRoot":"","sources":["../../src/codegen/fetch-customer-profile-schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAiB9C"}
1
+ {"version":3,"file":"fetch-customer-profile-schema.d.ts","sourceRoot":"","sources":["../../src/codegen/fetch-customer-profile-schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAiB9C"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Fetches the customer profile schema from the platform GraphQL API for codegen.
3
3
  */
4
- import { CUSTOMER_PROFILE_SCHEMA } from '../graphql/queries.js';
4
+ import { GetCustomerProfileSchemaDocument } from '../graphql/generated.js';
5
5
  export async function fetchCustomerProfileSchema(client) {
6
- const data = await client.request(CUSTOMER_PROFILE_SCHEMA);
6
+ const data = await client.request(GetCustomerProfileSchemaDocument);
7
7
  if (!data.customerProfileSchema)
8
8
  return null;
9
9
  return {
@@ -13,8 +13,8 @@ export async function fetchCustomerProfileSchema(client) {
13
13
  key: f.key,
14
14
  type: f.type,
15
15
  label: f.label,
16
- required: f.required,
17
- helpText: f.helpText,
16
+ required: f.required ?? undefined,
17
+ helpText: f.helpText ?? undefined,
18
18
  options: f.config,
19
19
  })),
20
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-models.d.ts","sourceRoot":"","sources":["../../src/codegen/fetch-models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAsCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAyC9E;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EAAE,EACtB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,YAAY,EAAE,CAahB"}
1
+ {"version":3,"file":"fetch-models.d.ts","sourceRoot":"","sources":["../../src/codegen/fetch-models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAyBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,iBAAiB,CAyCnB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EAAE,EACtB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,YAAY,EAAE,CAahB"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Fetches models from the platform GraphQL API and transforms them for codegen.
3
3
  */
4
- import { MODELS_FOR_CODEGEN } from '../graphql/queries.js';
4
+ import { ModelsForCodegenDocument } from '../graphql/generated.js';
5
5
  function normalizeConfig(raw) {
6
6
  return {
7
7
  records: Boolean(raw.records ?? true),
@@ -66,18 +66,18 @@ export function normalizeField(raw) {
66
66
  };
67
67
  }
68
68
  export async function fetchModelsForCodegen(client) {
69
- const data = await client.request(MODELS_FOR_CODEGEN, {
69
+ const data = await client.request(ModelsForCodegenDocument, {
70
70
  limit: 500,
71
71
  });
72
72
  return data.models.items.map((item) => ({
73
73
  key: item.key,
74
74
  name: item.name,
75
- pluralName: item.pluralName,
76
- description: item.description,
77
- category: item.category,
75
+ pluralName: item.pluralName ?? undefined,
76
+ description: item.description ?? undefined,
77
+ category: item.category ?? undefined,
78
78
  fields: (item.fields ?? []).map((f) => normalizeField(f)),
79
- config: normalizeConfig(item.config ?? {}),
80
- hooks: item.hooks,
79
+ config: normalizeConfig((item.config ?? {})),
80
+ hooks: (item.hooks ?? undefined),
81
81
  }));
82
82
  }
83
83
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"field-mapping.d.ts","sourceRoot":"","sources":["../../src/codegen/field-mapping.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,aAoBhC,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAoD1D,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,IAAI,GAAE,QAAQ,GAAG,OAAkB,GAClC,MAAM,CAqCR;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAY3E;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,EAAE,GAC1B,GAAG,CAAC,MAAM,CAAC,CAcb;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA8EjE"}
1
+ {"version":3,"file":"field-mapping.d.ts","sourceRoot":"","sources":["../../src/codegen/field-mapping.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,aAoBhC,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAoD1D,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,IAAI,GAAE,QAAQ,GAAG,OAAkB,GAClC,MAAM,CAqCR;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAW3E;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,EAAE,GAC1B,GAAG,CAAC,MAAM,CAAC,CAcb;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA2EjE"}
@@ -205,8 +205,7 @@ export function generateFieldDef(field) {
205
205
  .join(', ');
206
206
  parts.push(`options: [${optionsStr}]`);
207
207
  }
208
- if (field.type === 'reference' &&
209
- field.options?.referenceTypes) {
208
+ if (field.type === 'reference' && field.options?.referenceTypes) {
210
209
  const refTypes = field.options.referenceTypes;
211
210
  parts.push(`referenceTypes: [${refTypes.map((t) => `'${t}'`).join(', ')}]`);
212
211
  if (field.options.multiple)
@@ -1 +1 @@
1
- {"version":3,"file":"static-documents.d.ts","sourceRoot":"","sources":["../../../src/codegen/generators/static-documents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA4uB1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC9B,kBAAkB,EAAE,CAetB"}
1
+ {"version":3,"file":"static-documents.d.ts","sourceRoot":"","sources":["../../../src/codegen/generators/static-documents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAquB1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC9B,kBAAkB,EAAE,CAkCtB"}
@@ -686,42 +686,35 @@ mutation UpdateSharePermission($shareId: ID!, $permission: SharePermission!) {
686
686
  }
687
687
  `;
688
688
  }
689
- function searchDocument() {
690
- return `# Semantic search & embedding operations
689
+ function embeddingsDocument() {
690
+ return `# Vector embedding operations (search, write, delete)
691
691
  ${HEADER}
692
692
 
693
- query SemanticSearch($input: SemanticSearchInput!) {
694
- semanticSearch(input: $input) {
693
+ query SearchEmbeddings($input: SearchEmbeddingsInput!) {
694
+ searchEmbeddings(input: $input) {
695
695
  recordId
696
- source
697
696
  modelKey
698
697
  naturalKey
698
+ key
699
699
  similarity
700
- highlights
700
+ metadata
701
701
  }
702
702
  }
703
703
 
704
- query EmbeddingStatus($recordIds: [ID!]!, $source: EmbeddingSource!) {
705
- embeddingStatus(recordIds: $recordIds, source: $source) {
706
- recordId
707
- hasEmbedding
708
- lastUpdated
709
- model
710
- dimensions
704
+ mutation WriteEmbeddings($input: WriteEmbeddingsInput!) {
705
+ writeEmbeddings(input: $input) {
706
+ written
707
+ errors {
708
+ recordId
709
+ key
710
+ message
711
+ }
711
712
  }
712
713
  }
713
714
 
714
- query IsAIEnabled {
715
- isAIEnabled
716
- }
717
-
718
- mutation GenerateEmbedding($recordId: ID!, $modelKey: String!, $source: EmbeddingSource!) {
719
- generateEmbedding(recordId: $recordId, modelKey: $modelKey, source: $source) {
720
- success
721
- embeddingId
722
- recordId
723
- tokenCount
724
- dimensions
715
+ mutation DeleteEmbeddings($input: DeleteEmbeddingsInput!) {
716
+ deleteEmbeddings(input: $input) {
717
+ deleted
725
718
  }
726
719
  }
727
720
  `;
@@ -745,21 +738,30 @@ export function generateStaticDocuments(domains) {
745
738
  if (domains.auth)
746
739
  files.push({ filename: 'auth.graphql', content: authDocument() });
747
740
  if (domains.authProviders)
748
- files.push({ filename: 'auth-providers.graphql', content: authProvidersDocument() });
741
+ files.push({
742
+ filename: 'auth-providers.graphql',
743
+ content: authProvidersDocument(),
744
+ });
749
745
  if (domains.files)
750
746
  files.push({ filename: 'files.graphql', content: filesDocument() });
751
747
  if (domains.sync)
752
748
  files.push({ filename: 'sync.graphql', content: syncDocument() });
753
749
  if (domains.notifications)
754
- files.push({ filename: 'notifications.graphql', content: notificationsDocument() });
750
+ files.push({
751
+ filename: 'notifications.graphql',
752
+ content: notificationsDocument(),
753
+ });
755
754
  if (domains.operations)
756
- files.push({ filename: 'operations.graphql', content: operationsDocument() });
755
+ files.push({
756
+ filename: 'operations.graphql',
757
+ content: operationsDocument(),
758
+ });
757
759
  if (domains.schedules)
758
760
  files.push({ filename: 'schedules.graphql', content: schedulesDocument() });
759
761
  if (domains.sharing)
760
762
  files.push({ filename: 'sharing.graphql', content: sharingDocument() });
761
- if (domains.search)
762
- files.push({ filename: 'search.graphql', content: searchDocument() });
763
+ if (domains.embeddings)
764
+ files.push({ filename: 'embeddings.graphql', content: embeddingsDocument() });
763
765
  if (domains.analytics)
764
766
  files.push({ filename: 'analytics.graphql', content: analyticsDocument() });
765
767
  return files;
@@ -1 +1 @@
1
- {"version":3,"file":"typed-operations.d.ts","sourceRoot":"","sources":["../../../src/codegen/generators/typed-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CA4QR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAGR"}
1
+ {"version":3,"file":"typed-operations.d.ts","sourceRoot":"","sources":["../../../src/codegen/generators/typed-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CA4QR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../src/commands/api-keys.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAYtD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CA6KN"}
1
+ {"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../src/commands/api-keys.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAYtD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CA6JN"}
@@ -3,7 +3,7 @@ import { withErrorHandler } from '../lib/errors.js';
3
3
  import { createClient } from '../lib/client.js';
4
4
  import { formatOutput, formatList, timeAgo, success } from '../lib/output.js';
5
5
  import { confirmAction } from '../lib/input.js';
6
- import { LIST_API_KEYS, CREATE_API_KEY, ROTATE_API_KEY, REVOKE_API_KEY, } from '../graphql/queries.js';
6
+ import { ListApiKeysDocument, CreateApiKeyDocument, RotateApiKeyDocument, RevokeApiKeyDocument, } from '../graphql/generated.js';
7
7
  export function registerApiKeysCommands(program, globalOpts) {
8
8
  const apiKeys = program.command('api-keys').description('Manage API keys');
9
9
  // list
@@ -16,7 +16,7 @@ export function registerApiKeysCommands(program, globalOpts) {
16
16
  .action(withErrorHandler(globalOpts, async (cmdOpts) => {
17
17
  const opts = globalOpts();
18
18
  const client = await createClient(opts);
19
- const data = await client.request(LIST_API_KEYS, {
19
+ const data = await client.request(ListApiKeysDocument, {
20
20
  includeInactive: !!cmdOpts.includeInactive,
21
21
  search: cmdOpts.search,
22
22
  limit: parseInt(String(cmdOpts.limit ?? '50'), 10),
@@ -65,7 +65,7 @@ export function registerApiKeysCommands(program, globalOpts) {
65
65
  };
66
66
  if (cmdOpts.projectId)
67
67
  input.projectId = cmdOpts.projectId;
68
- const data = await client.request(CREATE_API_KEY, { input });
68
+ const data = await client.request(CreateApiKeyDocument, { input });
69
69
  if (opts.json || opts.jsonl) {
70
70
  formatOutput(data.createApiKey, opts);
71
71
  }
@@ -92,7 +92,7 @@ export function registerApiKeysCommands(program, globalOpts) {
92
92
  return;
93
93
  }
94
94
  const client = await createClient(opts);
95
- const data = await client.request(ROTATE_API_KEY, { id });
95
+ const data = await client.request(RotateApiKeyDocument, { id });
96
96
  if (opts.json || opts.jsonl) {
97
97
  formatOutput(data.rotateApiKey, opts);
98
98
  }
@@ -116,7 +116,7 @@ export function registerApiKeysCommands(program, globalOpts) {
116
116
  return;
117
117
  }
118
118
  const client = await createClient(opts);
119
- const data = await client.request(REVOKE_API_KEY, { id });
119
+ const data = await client.request(RevokeApiKeyDocument, { id });
120
120
  if (opts.json || opts.jsonl) {
121
121
  formatOutput(data.revokeApiKey, opts);
122
122
  }
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ import type { GlobalOptions } from '../lib/config.js';
3
+ export declare function registerAuthConfigCommands(program: Command, globalOpts: () => GlobalOptions): void;
4
+ //# sourceMappingURL=auth-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-config.d.ts","sourceRoot":"","sources":["../../src/commands/auth-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAStD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CA0CN"}
@@ -0,0 +1,37 @@
1
+ import { withErrorHandler } from '../lib/errors.js';
2
+ import { createClient } from '../lib/client.js';
3
+ import { formatOutput } from '../lib/output.js';
4
+ import { GetCustomerAuthConfigDocument, VerifyCustomerTokenDocument, } from '../graphql/generated.js';
5
+ export function registerAuthConfigCommands(program, globalOpts) {
6
+ const auth = program
7
+ .command('auth')
8
+ .description('Customer auth configuration');
9
+ // config
10
+ auth
11
+ .command('config')
12
+ .description('Get customer auth signing configuration')
13
+ .option('--show-key', 'Show the full signing key (masked by default)')
14
+ .action(withErrorHandler(globalOpts, async (cmdOpts) => {
15
+ const opts = globalOpts();
16
+ const client = await createClient(opts);
17
+ const data = await client.request(GetCustomerAuthConfigDocument);
18
+ const config = data.customerAuthConfig;
19
+ // Mask the signing key unless --show-key is passed
20
+ if (!cmdOpts.showKey && config.signingKey) {
21
+ const key = config.signingKey;
22
+ config.signingKey =
23
+ key.slice(0, 4) + '…' + key.slice(-4);
24
+ }
25
+ formatOutput(config, opts);
26
+ }));
27
+ // verify-token
28
+ auth
29
+ .command('verify-token <token>')
30
+ .description('Verify a customer JWT token')
31
+ .action(withErrorHandler(globalOpts, async (token) => {
32
+ const opts = globalOpts();
33
+ const client = await createClient(opts);
34
+ const data = await client.request(VerifyCustomerTokenDocument, { token });
35
+ formatOutput(data.verifyCustomerToken, opts);
36
+ }));
37
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"auth-providers.d.ts","sourceRoot":"","sources":["../../src/commands/auth-providers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAsBtD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CA4PN"}
1
+ {"version":3,"file":"auth-providers.d.ts","sourceRoot":"","sources":["../../src/commands/auth-providers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAsBtD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CAuPN"}
@@ -3,7 +3,7 @@ import { withErrorHandler } from '../lib/errors.js';
3
3
  import { createClient } from '../lib/client.js';
4
4
  import { formatOutput, formatList, success } from '../lib/output.js';
5
5
  import { parseInputData, confirmAction } from '../lib/input.js';
6
- import { LIST_AUTH_PROVIDERS, GET_AUTH_PROVIDER, CREATE_AUTH_PROVIDER, UPDATE_AUTH_PROVIDER, DELETE_AUTH_PROVIDER, } from '../graphql/queries.js';
6
+ import { ListAuthProvidersDocument, GetAuthProviderDocument, CreateAuthProviderDocument, UpdateAuthProviderDocument, DeleteAuthProviderDocument, } from '../graphql/generated.js';
7
7
  const VALID_TYPES = [
8
8
  'OAUTH2',
9
9
  'TOKEN_SSO',
@@ -24,7 +24,7 @@ export function registerAuthProvidersCommands(program, globalOpts) {
24
24
  .action(withErrorHandler(globalOpts, async (cmdOpts) => {
25
25
  const opts = globalOpts();
26
26
  const client = await createClient(opts);
27
- const data = await client.request(LIST_AUTH_PROVIDERS, {
27
+ const data = await client.request(ListAuthProvidersDocument, {
28
28
  enabledOnly: !!cmdOpts.enabledOnly,
29
29
  });
30
30
  formatList(data.customerAuthProviders, opts, {
@@ -56,7 +56,7 @@ export function registerAuthProvidersCommands(program, globalOpts) {
56
56
  .action(withErrorHandler(globalOpts, async (id) => {
57
57
  const opts = globalOpts();
58
58
  const client = await createClient(opts);
59
- const data = await client.request(GET_AUTH_PROVIDER, { id });
59
+ const data = await client.request(GetAuthProviderDocument, { id });
60
60
  if (!data.customerAuthProvider) {
61
61
  throw new Error(`Auth provider not found: ${id}`);
62
62
  }
@@ -121,7 +121,7 @@ export function registerAuthProvidersCommands(program, globalOpts) {
121
121
  if (cmdOpts.captureMetadata !== undefined)
122
122
  input.captureMetadata = true;
123
123
  const client = await createClient(opts);
124
- const data = await client.request(CREATE_AUTH_PROVIDER, { input });
124
+ const data = await client.request(CreateAuthProviderDocument, { input });
125
125
  if (opts.json || opts.jsonl) {
126
126
  formatOutput(data.createCustomerAuthProvider, opts);
127
127
  }
@@ -170,7 +170,7 @@ export function registerAuthProvidersCommands(program, globalOpts) {
170
170
  throw new Error('No update fields provided.');
171
171
  }
172
172
  const client = await createClient(opts);
173
- const data = await client.request(UPDATE_AUTH_PROVIDER, { id, input });
173
+ const data = await client.request(UpdateAuthProviderDocument, { id, input });
174
174
  if (opts.json || opts.jsonl) {
175
175
  formatOutput(data.updateCustomerAuthProvider, opts);
176
176
  }
@@ -191,7 +191,7 @@ export function registerAuthProvidersCommands(program, globalOpts) {
191
191
  return;
192
192
  }
193
193
  const client = await createClient(opts);
194
- const data = await client.request(DELETE_AUTH_PROVIDER, { id });
194
+ const data = await client.request(DeleteAuthProviderDocument, { id });
195
195
  if (opts.json || opts.jsonl) {
196
196
  formatOutput({ deleted: data.deleteCustomerAuthProvider, id }, opts);
197
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AA8B1B,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CAmIN"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AA8B1B,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CAkIN"}
@@ -1,4 +1,4 @@
1
- import { getCredentials, updateCredentials } from '../auth/credentials.js';
1
+ import { getCredentials, getProjectContext, writeProjectContext, } from '../auth/credentials.js';
2
2
  import { getApiUrl, getGraphQLEndpoint, } from '../lib/config.js';
3
3
  import { withErrorHandler } from '../lib/errors.js';
4
4
  import { formatList, success } from '../lib/output.js';
@@ -34,9 +34,10 @@ export function registerContextCommands(program, globalOpts) {
34
34
  throw new Error('Not logged in. Run `foir login` first.');
35
35
  const apiUrl = getApiUrl(opts);
36
36
  const data = await gqlRequest(apiUrl, credentials.accessToken, `query { sessionContext { projectId availableProjects { id name tenantId } } }`);
37
+ const projectContext = await getProjectContext();
37
38
  const projects = data.sessionContext.availableProjects.map((p) => ({
38
39
  ...p,
39
- current: p.id === credentials.selectedProject?.id ? '*' : '',
40
+ current: p.id === projectContext?.id ? '*' : '',
40
41
  }));
41
42
  formatList(projects, opts, {
42
43
  columns: [
@@ -61,12 +62,10 @@ export function registerContextCommands(program, globalOpts) {
61
62
  const project = data.sessionContext.availableProjects.find((p) => p.id === projectId);
62
63
  if (!project)
63
64
  throw new Error(`Project "${projectId}" not found.`);
64
- await updateCredentials({
65
- selectedProject: {
66
- id: project.id,
67
- name: project.name,
68
- tenantId: project.tenantId,
69
- },
65
+ await writeProjectContext({
66
+ id: project.id,
67
+ name: project.name,
68
+ tenantId: project.tenantId,
70
69
  });
71
70
  success(`Switched to project: ${project.name}`);
72
71
  console.log('Run `foir select-project` to provision a new API key for this project.');
@@ -1 +1 @@
1
- {"version":3,"file":"customer-profiles.d.ts","sourceRoot":"","sources":["../../src/commands/customer-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAYtD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CAkIN"}
1
+ {"version":3,"file":"customer-profiles.d.ts","sourceRoot":"","sources":["../../src/commands/customer-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAYtD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CA0HN"}
@@ -2,7 +2,7 @@ import { withErrorHandler } from '../lib/errors.js';
2
2
  import { createClient } from '../lib/client.js';
3
3
  import { formatOutput, success } from '../lib/output.js';
4
4
  import { parseInputData } from '../lib/input.js';
5
- import { CUSTOMER_PROFILE_SCHEMA, UPDATE_CUSTOMER_PROFILE_SCHEMA, CUSTOMER_PROFILE, SET_CUSTOMER_PROFILE, } from '../graphql/queries.js';
5
+ import { GetCustomerProfileSchemaDocument, UpdateCustomerProfileSchemaDocument, GetCustomerProfileDocument, SetCustomerProfileDocument, } from '../graphql/generated.js';
6
6
  export function registerCustomerProfilesCommands(program, globalOpts) {
7
7
  const cp = program
8
8
  .command('customer-profiles')
@@ -19,7 +19,7 @@ export function registerCustomerProfilesCommands(program, globalOpts) {
19
19
  .action(withErrorHandler(globalOpts, async () => {
20
20
  const opts = globalOpts();
21
21
  const client = await createClient(opts);
22
- const data = await client.request(CUSTOMER_PROFILE_SCHEMA);
22
+ const data = await client.request(GetCustomerProfileSchemaDocument);
23
23
  if (!data.customerProfileSchema) {
24
24
  if (opts.json || opts.jsonl) {
25
25
  formatOutput(null, opts);
@@ -49,7 +49,7 @@ export function registerCustomerProfilesCommands(program, globalOpts) {
49
49
  fields: inputData.fields,
50
50
  publicFields: inputData.publicFields ?? undefined,
51
51
  };
52
- const data = await client.request(UPDATE_CUSTOMER_PROFILE_SCHEMA, variables);
52
+ const data = await client.request(UpdateCustomerProfileSchemaDocument, variables);
53
53
  formatOutput(data.updateCustomerProfileSchema, opts);
54
54
  if (!(opts.json || opts.jsonl || opts.quiet)) {
55
55
  const version = data.updateCustomerProfileSchema.version;
@@ -67,7 +67,7 @@ export function registerCustomerProfilesCommands(program, globalOpts) {
67
67
  .action(withErrorHandler(globalOpts, async (customerId) => {
68
68
  const opts = globalOpts();
69
69
  const client = await createClient(opts);
70
- const data = await client.request(CUSTOMER_PROFILE, { customerId });
70
+ const data = await client.request(GetCustomerProfileDocument, { customerId });
71
71
  if (!data.customerProfile) {
72
72
  throw new Error(`No profile found for customer "${customerId}".`);
73
73
  }
@@ -85,7 +85,7 @@ export function registerCustomerProfilesCommands(program, globalOpts) {
85
85
  const inputData = await parseInputData(cmdOpts);
86
86
  // Accept either { data: {...} } or the raw data object
87
87
  const profileData = inputData.data ?? inputData;
88
- const data = await client.request(SET_CUSTOMER_PROFILE, {
88
+ const data = await client.request(SetCustomerProfileDocument, {
89
89
  customerId,
90
90
  data: profileData,
91
91
  });
@@ -1 +1 @@
1
- {"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../src/commands/customers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAatD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CAqJN"}
1
+ {"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../src/commands/customers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAatD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CA2IN"}