@kelpie/schemas 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +16 -0
  2. package/dist/apiKey.d.ts +5 -0
  3. package/dist/apiKey.d.ts.map +1 -1
  4. package/dist/apiKey.js +8 -1
  5. package/dist/apiKey.js.map +1 -1
  6. package/dist/apiKeyScopes.d.ts +36 -0
  7. package/dist/apiKeyScopes.d.ts.map +1 -0
  8. package/dist/apiKeyScopes.js +217 -0
  9. package/dist/apiKeyScopes.js.map +1 -0
  10. package/dist/conversion.d.ts +58 -0
  11. package/dist/conversion.d.ts.map +1 -0
  12. package/dist/conversion.js +63 -0
  13. package/dist/conversion.js.map +1 -0
  14. package/dist/deal.d.ts +3 -0
  15. package/dist/deal.d.ts.map +1 -1
  16. package/dist/deal.js +5 -0
  17. package/dist/deal.js.map +1 -1
  18. package/dist/enquiry.d.ts +3 -0
  19. package/dist/enquiry.d.ts.map +1 -1
  20. package/dist/enquiry.js +5 -0
  21. package/dist/enquiry.js.map +1 -1
  22. package/dist/form.d.ts.map +1 -1
  23. package/dist/form.js +2 -2
  24. package/dist/form.js.map +1 -1
  25. package/dist/formMapTargets.d.ts +72 -0
  26. package/dist/formMapTargets.d.ts.map +1 -0
  27. package/dist/formMapTargets.js +385 -0
  28. package/dist/formMapTargets.js.map +1 -0
  29. package/dist/importExport.d.ts +14 -1
  30. package/dist/importExport.d.ts.map +1 -1
  31. package/dist/importExport.js +161 -1
  32. package/dist/importExport.js.map +1 -1
  33. package/dist/index.d.ts +8 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +4 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/list.d.ts +0 -10
  38. package/dist/list.d.ts.map +1 -1
  39. package/dist/list.js +0 -6
  40. package/dist/list.js.map +1 -1
  41. package/dist/opportunity.d.ts +3 -0
  42. package/dist/opportunity.d.ts.map +1 -1
  43. package/dist/opportunity.js +5 -0
  44. package/dist/opportunity.js.map +1 -1
  45. package/dist/partnership.d.ts +3 -0
  46. package/dist/partnership.d.ts.map +1 -1
  47. package/dist/partnership.js +5 -0
  48. package/dist/partnership.js.map +1 -1
  49. package/dist/raise.d.ts +3 -0
  50. package/dist/raise.d.ts.map +1 -1
  51. package/dist/raise.js +5 -0
  52. package/dist/raise.js.map +1 -1
  53. package/dist/session.d.ts +1 -11
  54. package/dist/session.d.ts.map +1 -1
  55. package/dist/session.js +0 -6
  56. package/dist/session.js.map +1 -1
  57. package/dist/values.d.ts +4 -3
  58. package/dist/values.d.ts.map +1 -1
  59. package/dist/values.js +2 -0
  60. package/dist/values.js.map +1 -1
  61. package/package.json +1 -1
  62. package/src/apiKey.ts +13 -1
  63. package/src/apiKeyScopes.ts +264 -0
  64. package/src/conversion.ts +99 -0
  65. package/src/deal.ts +9 -0
  66. package/src/enquiry.ts +9 -0
  67. package/src/form.ts +1 -2
  68. package/src/formMapTargets.ts +548 -0
  69. package/src/importExport.ts +174 -1
  70. package/src/index.ts +61 -0
  71. package/src/list.ts +0 -16
  72. package/src/opportunity.ts +9 -0
  73. package/src/partnership.ts +9 -0
  74. package/src/raise.ts +9 -0
  75. package/src/session.ts +1 -17
  76. package/src/values.ts +7 -2
package/README.md CHANGED
@@ -26,6 +26,22 @@ const response = await fetch('https://example.com/v1/people/per_01J.../', {
26
26
  const person = personSchema.parse(await response.json())
27
27
  ```
28
28
 
29
+ API keys accept optional scopes on create:
30
+
31
+ ```ts
32
+ import { createApiKeyBody } from '@kelpie/schemas'
33
+
34
+ await fetch('https://example.com/v1/api-keys', {
35
+ method: 'POST',
36
+ headers: { authorization: `Bearer ${adminKey}`, 'content-type': 'application/json' },
37
+ body: JSON.stringify(createApiKeyBody({
38
+ name: 'Reporting bot',
39
+ kind: 'workspace',
40
+ scopes: ['read:objects'],
41
+ })),
42
+ })
43
+ ```
44
+
29
45
  `parse` throws on a response that does not match, which is the point. A field the service renamed becomes an error where it happens rather than `undefined` three layers away.
30
46
 
31
47
  ## Licence
package/dist/apiKey.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import type { ApiKeyScope } from './apiKeyScopes.ts';
2
3
  import type { ApiKeyKind } from './values.ts';
3
4
  /**
4
5
  * Wire shapes for `/v1/api-keys`.
@@ -12,6 +13,8 @@ export interface ApiKey {
12
13
  readonly id: string;
13
14
  readonly name: string;
14
15
  readonly kind: ApiKeyKind;
16
+ /** Empty means full access. Presets and granular tokens may be mixed. */
17
+ readonly scopes: readonly ApiKeyScope[];
15
18
  /** The prefix plus the last four characters, e.g. `kp_live_…9f2c`. */
16
19
  readonly displayPrefix: string;
17
20
  readonly lastUsedAt: Date | null;
@@ -26,6 +29,8 @@ export declare const createdApiKeySchema: z.ZodType<CreatedApiKey, unknown>;
26
29
  export interface CreateApiKeyInput {
27
30
  readonly name: string;
28
31
  readonly kind: ApiKeyKind;
32
+ /** Omitted or empty means full access. */
33
+ readonly scopes?: readonly ApiKeyScope[];
29
34
  }
30
35
  export declare function createApiKeyBody(input: CreateApiKeyInput): unknown;
31
36
  //# sourceMappingURL=apiKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiKey.d.ts","sourceRoot":"","sources":["../src/apiKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C;;;;;;;GAOG;AAEH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;CACzB;AAED,oFAAoF;AACpF,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAwBD,eAAO,MAAM,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAwC,CAAA;AAE5F,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAEiB,CAAA;AAEnF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAElE"}
1
+ {"version":3,"file":"apiKey.d.ts","sourceRoot":"","sources":["../src/apiKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C;;;;;;;GAOG;AAEH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;IACvC,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;CACzB;AAED,oFAAoF;AACpF,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AA0BD,eAAO,MAAM,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAwC,CAAA;AAE5F,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAEiB,CAAA;AAEnF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;CACzC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAMlE"}
package/dist/apiKey.js CHANGED
@@ -1,10 +1,12 @@
1
1
  import { z } from 'zod';
2
+ import { API_KEY_SCOPES } from './apiKeyScopes.js';
2
3
  import { API_KEY_KINDS } from './values.js';
3
4
  import { idSchema, nullableTimestampSchema, timestampSchema } from './wire.js';
4
5
  const apiKeyWire = {
5
6
  id: idSchema,
6
7
  name: z.string(),
7
8
  kind: z.enum(API_KEY_KINDS),
9
+ scopes: z.array(z.enum(API_KEY_SCOPES)),
8
10
  display_prefix: z.string(),
9
11
  last_used_at: nullableTimestampSchema,
10
12
  created_at: timestampSchema,
@@ -15,6 +17,7 @@ function toApiKey(wire) {
15
17
  id: wire.id,
16
18
  name: wire.name,
17
19
  kind: wire.kind,
20
+ scopes: wire.scopes,
18
21
  displayPrefix: wire.display_prefix,
19
22
  lastUsedAt: wire.last_used_at,
20
23
  createdAt: wire.created_at,
@@ -25,6 +28,10 @@ export const createdApiKeySchema = z
25
28
  .object({ ...apiKeyWire, secret: z.string() })
26
29
  .transform((wire) => ({ ...toApiKey(wire), secret: wire.secret }));
27
30
  export function createApiKeyBody(input) {
28
- return { name: input.name, kind: input.kind };
31
+ return {
32
+ name: input.name,
33
+ kind: input.kind,
34
+ ...(input.scopes === undefined || input.scopes.length === 0 ? {} : { scopes: input.scopes }),
35
+ };
29
36
  }
30
37
  //# sourceMappingURL=apiKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiKey.js","sourceRoot":"","sources":["../src/apiKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AA0B9E,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAC3B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,YAAY,EAAE,uBAAuB;IACrC,UAAU,EAAE,eAAe;CAC5B,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AAE7C,SAAS,QAAQ,CAAC,IAAuC;IACvD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,aAAa,EAAE,IAAI,CAAC,cAAc;QAClC,UAAU,EAAE,IAAI,CAAC,YAAY;QAC7B,SAAS,EAAE,IAAI,CAAC,UAAU;KAC3B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAA+B,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;AAE5F,MAAM,CAAC,MAAM,mBAAmB,GAAsC,CAAC;KACpE,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;KAC7C,SAAS,CAAC,CAAC,IAAI,EAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAOnF,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;AAC/C,CAAC"}
1
+ {"version":3,"file":"apiKey.js","sourceRoot":"","sources":["../src/apiKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AA4B9E,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,YAAY,EAAE,uBAAuB;IACrC,UAAU,EAAE,eAAe;CAC5B,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AAE7C,SAAS,QAAQ,CAAC,IAAuC;IACvD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,aAAa,EAAE,IAAI,CAAC,cAAc;QAClC,UAAU,EAAE,IAAI,CAAC,YAAY;QAC7B,SAAS,EAAE,IAAI,CAAC,UAAU;KAC3B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAA+B,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;AAE5F,MAAM,CAAC,MAAM,mBAAmB,GAAsC,CAAC;KACpE,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;KAC7C,SAAS,CAAC,CAAC,IAAI,EAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AASnF,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAC7F,CAAA;AACH,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * API key scopes: preset bundles and fine-grained per-resource permissions.
3
+ *
4
+ * Presets expand to granular scopes at enforcement time. An empty scope list on
5
+ * a key means full access.
6
+ */
7
+ /** Preset bundles — stored on the key and shown as one badge in the UI. */
8
+ export declare const API_KEY_PRESET_SCOPES: readonly ['read:all', 'write:all', 'read:objects', 'write:objects', 'read:admin', 'write:admin', 'admin:objects', 'admin'];
9
+ export type ApiKeyPresetScope = (typeof API_KEY_PRESET_SCOPES)[number];
10
+ /** Resources that hold CRM and content data (not workspace admin). */
11
+ export declare const API_KEY_OBJECT_DATA_RESOURCES: readonly ['people', 'companies', 'positions', 'deals', 'enquiries', 'opportunities', 'partnerships', 'raises', 'roles', 'candidates', 'decisions', 'plan_items', 'notes', 'lists', 'handbook', 'forms'];
12
+ /** Read-only object-data surfaces. */
13
+ export declare const API_KEY_OBJECT_READ_ONLY_RESOURCES: readonly ['activities', 'search', 'dashboard'];
14
+ /** Object configuration (schema-ish admin). */
15
+ export declare const API_KEY_OBJECT_CONFIG_RESOURCES: readonly ['custom_fields', 'pipeline_stages', 'consent_purposes'];
16
+ /** Workspace administration surfaces. */
17
+ export declare const API_KEY_ADMIN_RESOURCES: readonly ['workspace', 'import_export', 'webhooks', 'api_keys', 'agent_tasks', 'agents', 'agent_runs', 'modules', 'sample_data'];
18
+ /** Fine-grained per-resource scopes. */
19
+ export declare const API_KEY_GRANULAR_SCOPES: readonly ("activities:read" | "agent_runs:read" | "agent_runs:write" | "agent_tasks:read" | "agent_tasks:write" | "agents:read" | "agents:write" | "api_keys:read" | "api_keys:write" | "candidates:read" | "candidates:write" | "companies:read" | "companies:write" | "consent_purposes:read" | "consent_purposes:write" | "custom_fields:read" | "custom_fields:write" | "dashboard:read" | "deals:read" | "deals:write" | "decisions:read" | "decisions:write" | "enquiries:read" | "enquiries:write" | "forms:read" | "forms:write" | "handbook:read" | "handbook:write" | "import_export:read" | "import_export:write" | "lists:read" | "lists:write" | "modules:read" | "modules:write" | "notes:read" | "notes:write" | "opportunities:read" | "opportunities:write" | "partnerships:read" | "partnerships:write" | "people:read" | "people:write" | "pipeline_stages:read" | "pipeline_stages:write" | "plan_items:read" | "plan_items:write" | "positions:read" | "positions:write" | "raises:read" | "raises:write" | "roles:read" | "roles:write" | "sample_data:read" | "sample_data:write" | "search:read" | "webhooks:read" | "webhooks:write" | "workspace:read" | "workspace:write")[];
20
+ export type ApiKeyGranularScope = (typeof API_KEY_GRANULAR_SCOPES)[number];
21
+ export declare const API_KEY_SCOPES: readonly ["read:all", "write:all", "read:objects", "write:objects", "read:admin", "write:admin", "admin:objects", "admin", ...("activities:read" | "agent_runs:read" | "agent_runs:write" | "agent_tasks:read" | "agent_tasks:write" | "agents:read" | "agents:write" | "api_keys:read" | "api_keys:write" | "candidates:read" | "candidates:write" | "companies:read" | "companies:write" | "consent_purposes:read" | "consent_purposes:write" | "custom_fields:read" | "custom_fields:write" | "dashboard:read" | "deals:read" | "deals:write" | "decisions:read" | "decisions:write" | "enquiries:read" | "enquiries:write" | "forms:read" | "forms:write" | "handbook:read" | "handbook:write" | "import_export:read" | "import_export:write" | "lists:read" | "lists:write" | "modules:read" | "modules:write" | "notes:read" | "notes:write" | "opportunities:read" | "opportunities:write" | "partnerships:read" | "partnerships:write" | "people:read" | "people:write" | "pipeline_stages:read" | "pipeline_stages:write" | "plan_items:read" | "plan_items:write" | "positions:read" | "positions:write" | "raises:read" | "raises:write" | "roles:read" | "roles:write" | "sample_data:read" | "sample_data:write" | "search:read" | "webhooks:read" | "webhooks:write" | "workspace:read" | "workspace:write")[]];
22
+ export type ApiKeyScope = (typeof API_KEY_SCOPES)[number];
23
+ export declare const API_KEY_SCOPE_LABELS: Readonly<Record<ApiKeyScope, string>>;
24
+ /** UI groupings for the custom scope picker. */
25
+ export declare const API_KEY_SCOPE_GROUPS: readonly {
26
+ readonly label: string;
27
+ readonly scopes: readonly ApiKeyGranularScope[];
28
+ }[];
29
+ export declare function isApiKeyPresetScope(scope: ApiKeyScope): scope is ApiKeyPresetScope;
30
+ export declare function isApiKeyGranularScope(scope: ApiKeyScope): scope is ApiKeyGranularScope;
31
+ /** Flattens preset tokens to the granular set used for enforcement. */
32
+ export declare function expandApiKeyScopes(scopes: readonly ApiKeyScope[]): ReadonlySet<ApiKeyGranularScope>;
33
+ /** Whether a stored scope set satisfies a required granular scope. Empty stored = full access. */
34
+ export declare function satisfiesApiKeyScope(stored: readonly ApiKeyScope[], required: ApiKeyGranularScope): boolean;
35
+ export declare function dedupeApiKeyScopes(scopes: readonly ApiKeyScope[]): ApiKeyScope[];
36
+ //# sourceMappingURL=apiKeyScopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiKeyScopes.d.ts","sourceRoot":"","sources":["../src/apiKeyScopes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,YAChC,UAAU,EACV,WAAW,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,eAAe,EACf,OAAO,CACC,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtE,sEAAsE;AACtE,eAAO,MAAM,6BAA6B,YACxC,QAAQ,EACR,WAAW,EACX,WAAW,EACX,OAAO,EACP,WAAW,EACX,eAAe,EACf,cAAc,EACd,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,OAAO,EACP,OAAO,EACP,UAAU,EACV,OAAO,CACC,CAAA;AAEV,sCAAsC;AACtC,eAAO,MAAM,kCAAkC,YAAI,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAA;AAEhG,+CAA+C;AAC/C,eAAO,MAAM,+BAA+B,YAC1C,eAAe,EACf,iBAAiB,EACjB,kBAAkB,CACV,CAAA;AAEV,yCAAyC;AACzC,eAAO,MAAM,uBAAuB,YAClC,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,CACL,CAAA;AAgCV,wCAAwC;AACxC,eAAO,MAAM,uBAAuB,yoCAO1B,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,eAAO,MAAM,cAAc,+vCAAkE,CAAA;AAE7F,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzD,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAoEtE,CAAA;AAaD,gDAAgD;AAChD,eAAO,MAAM,oBAAoB,EAAE,SAAS;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAChD,EAaA,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,IAAI,iBAAiB,CAElF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,IAAI,mBAAmB,CAEtF;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAcnG;AAED,kGAAkG;AAClG,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAoBT;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,CAEhF"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * API key scopes: preset bundles and fine-grained per-resource permissions.
3
+ *
4
+ * Presets expand to granular scopes at enforcement time. An empty scope list on
5
+ * a key means full access.
6
+ */
7
+ /** Preset bundles — stored on the key and shown as one badge in the UI. */
8
+ export const API_KEY_PRESET_SCOPES = [
9
+ 'read:all',
10
+ 'write:all',
11
+ 'read:objects',
12
+ 'write:objects',
13
+ 'read:admin',
14
+ 'write:admin',
15
+ 'admin:objects',
16
+ 'admin',
17
+ ];
18
+ /** Resources that hold CRM and content data (not workspace admin). */
19
+ export const API_KEY_OBJECT_DATA_RESOURCES = [
20
+ 'people',
21
+ 'companies',
22
+ 'positions',
23
+ 'deals',
24
+ 'enquiries',
25
+ 'opportunities',
26
+ 'partnerships',
27
+ 'raises',
28
+ 'roles',
29
+ 'candidates',
30
+ 'decisions',
31
+ 'plan_items',
32
+ 'notes',
33
+ 'lists',
34
+ 'handbook',
35
+ 'forms',
36
+ ];
37
+ /** Read-only object-data surfaces. */
38
+ export const API_KEY_OBJECT_READ_ONLY_RESOURCES = ['activities', 'search', 'dashboard'];
39
+ /** Object configuration (schema-ish admin). */
40
+ export const API_KEY_OBJECT_CONFIG_RESOURCES = [
41
+ 'custom_fields',
42
+ 'pipeline_stages',
43
+ 'consent_purposes',
44
+ ];
45
+ /** Workspace administration surfaces. */
46
+ export const API_KEY_ADMIN_RESOURCES = [
47
+ 'workspace',
48
+ 'import_export',
49
+ 'webhooks',
50
+ 'api_keys',
51
+ 'agent_tasks',
52
+ 'agents',
53
+ 'agent_runs',
54
+ 'modules',
55
+ 'sample_data',
56
+ ];
57
+ function readScope(resource) {
58
+ return `${resource}:read`;
59
+ }
60
+ function writeScope(resource) {
61
+ return `${resource}:write`;
62
+ }
63
+ const OBJECT_DATA_READ_SCOPES = [
64
+ ...API_KEY_OBJECT_DATA_RESOURCES.map(readScope),
65
+ ...API_KEY_OBJECT_READ_ONLY_RESOURCES.map(readScope),
66
+ ];
67
+ const OBJECT_DATA_WRITE_SCOPES = API_KEY_OBJECT_DATA_RESOURCES.map(writeScope);
68
+ const OBJECT_CONFIG_READ_SCOPES = API_KEY_OBJECT_CONFIG_RESOURCES.map(readScope);
69
+ const OBJECT_CONFIG_WRITE_SCOPES = API_KEY_OBJECT_CONFIG_RESOURCES.map(writeScope);
70
+ const ADMIN_READ_SCOPES = API_KEY_ADMIN_RESOURCES.map(readScope);
71
+ const ADMIN_WRITE_SCOPES = API_KEY_ADMIN_RESOURCES.map(writeScope);
72
+ /** Fine-grained per-resource scopes. */
73
+ export const API_KEY_GRANULAR_SCOPES = [
74
+ ...OBJECT_DATA_READ_SCOPES,
75
+ ...OBJECT_DATA_WRITE_SCOPES,
76
+ ...OBJECT_CONFIG_READ_SCOPES,
77
+ ...OBJECT_CONFIG_WRITE_SCOPES,
78
+ ...ADMIN_READ_SCOPES,
79
+ ...ADMIN_WRITE_SCOPES,
80
+ ];
81
+ export const API_KEY_SCOPES = [...API_KEY_PRESET_SCOPES, ...API_KEY_GRANULAR_SCOPES];
82
+ export const API_KEY_SCOPE_LABELS = {
83
+ 'read:all': 'Read all',
84
+ 'write:all': 'Write all',
85
+ 'read:objects': 'Read objects',
86
+ 'write:objects': 'Write objects',
87
+ 'read:admin': 'Read admin',
88
+ 'write:admin': 'Write admin',
89
+ 'admin:objects': 'Object admin',
90
+ admin: 'Admin',
91
+ 'people:read': 'People (read)',
92
+ 'people:write': 'People (write)',
93
+ 'companies:read': 'Companies (read)',
94
+ 'companies:write': 'Companies (write)',
95
+ 'positions:read': 'Positions (read)',
96
+ 'positions:write': 'Positions (write)',
97
+ 'deals:read': 'Deals (read)',
98
+ 'deals:write': 'Deals (write)',
99
+ 'enquiries:read': 'Enquiries (read)',
100
+ 'enquiries:write': 'Enquiries (write)',
101
+ 'opportunities:read': 'Opportunities (read)',
102
+ 'opportunities:write': 'Opportunities (write)',
103
+ 'partnerships:read': 'Partnerships (read)',
104
+ 'partnerships:write': 'Partnerships (write)',
105
+ 'raises:read': 'Raises (read)',
106
+ 'raises:write': 'Raises (write)',
107
+ 'roles:read': 'Roles (read)',
108
+ 'roles:write': 'Roles (write)',
109
+ 'candidates:read': 'Candidates (read)',
110
+ 'candidates:write': 'Candidates (write)',
111
+ 'decisions:read': 'Decisions (read)',
112
+ 'decisions:write': 'Decisions (write)',
113
+ 'plan_items:read': 'Plan items (read)',
114
+ 'plan_items:write': 'Plan items (write)',
115
+ 'notes:read': 'Notes (read)',
116
+ 'notes:write': 'Notes (write)',
117
+ 'lists:read': 'Lists (read)',
118
+ 'lists:write': 'Lists (write)',
119
+ 'handbook:read': 'Handbook (read)',
120
+ 'handbook:write': 'Handbook (write)',
121
+ 'forms:read': 'Forms (read)',
122
+ 'forms:write': 'Forms (write)',
123
+ 'activities:read': 'Activities (read)',
124
+ 'search:read': 'Search (read)',
125
+ 'dashboard:read': 'Dashboard (read)',
126
+ 'custom_fields:read': 'Custom fields (read)',
127
+ 'custom_fields:write': 'Custom fields (write)',
128
+ 'pipeline_stages:read': 'Pipeline stages (read)',
129
+ 'pipeline_stages:write': 'Pipeline stages (write)',
130
+ 'consent_purposes:read': 'Consent purposes (read)',
131
+ 'consent_purposes:write': 'Consent purposes (write)',
132
+ 'workspace:read': 'Workspace (read)',
133
+ 'workspace:write': 'Workspace (write)',
134
+ 'import_export:read': 'Import / export (read)',
135
+ 'import_export:write': 'Import / export (write)',
136
+ 'webhooks:read': 'Webhooks (read)',
137
+ 'webhooks:write': 'Webhooks (write)',
138
+ 'api_keys:read': 'API keys (read)',
139
+ 'api_keys:write': 'API keys (write)',
140
+ 'agent_tasks:read': 'Agent tasks (read)',
141
+ 'agent_tasks:write': 'Agent tasks (write)',
142
+ 'agents:read': 'Agents (read)',
143
+ 'agents:write': 'Agents (write)',
144
+ 'agent_runs:read': 'Agent runs (read)',
145
+ 'agent_runs:write': 'Agent runs (write)',
146
+ 'modules:read': 'Modules (read)',
147
+ 'modules:write': 'Modules (write)',
148
+ 'sample_data:read': 'Sample data (read)',
149
+ 'sample_data:write': 'Sample data (write)',
150
+ };
151
+ const PRESET_EXPANSIONS = {
152
+ 'read:all': [...API_KEY_GRANULAR_SCOPES.filter((scope) => scope.endsWith(':read'))],
153
+ 'write:all': [...API_KEY_GRANULAR_SCOPES.filter((scope) => scope.endsWith(':write'))],
154
+ 'read:objects': [...OBJECT_DATA_READ_SCOPES],
155
+ 'write:objects': [...OBJECT_DATA_WRITE_SCOPES],
156
+ 'read:admin': [...ADMIN_READ_SCOPES],
157
+ 'write:admin': [...ADMIN_WRITE_SCOPES],
158
+ 'admin:objects': [...OBJECT_CONFIG_WRITE_SCOPES],
159
+ admin: [...ADMIN_WRITE_SCOPES, ...OBJECT_CONFIG_WRITE_SCOPES],
160
+ };
161
+ /** UI groupings for the custom scope picker. */
162
+ export const API_KEY_SCOPE_GROUPS = [
163
+ {
164
+ label: 'Object data',
165
+ scopes: [...OBJECT_DATA_READ_SCOPES, ...OBJECT_DATA_WRITE_SCOPES],
166
+ },
167
+ {
168
+ label: 'Object config',
169
+ scopes: [...OBJECT_CONFIG_READ_SCOPES, ...OBJECT_CONFIG_WRITE_SCOPES],
170
+ },
171
+ {
172
+ label: 'Workspace admin',
173
+ scopes: [...ADMIN_READ_SCOPES, ...ADMIN_WRITE_SCOPES],
174
+ },
175
+ ];
176
+ export function isApiKeyPresetScope(scope) {
177
+ return API_KEY_PRESET_SCOPES.includes(scope);
178
+ }
179
+ export function isApiKeyGranularScope(scope) {
180
+ return API_KEY_GRANULAR_SCOPES.includes(scope);
181
+ }
182
+ /** Flattens preset tokens to the granular set used for enforcement. */
183
+ export function expandApiKeyScopes(scopes) {
184
+ const expanded = new Set();
185
+ for (const scope of scopes) {
186
+ if (isApiKeyPresetScope(scope)) {
187
+ for (const granular of PRESET_EXPANSIONS[scope]) {
188
+ expanded.add(granular);
189
+ }
190
+ }
191
+ else if (isApiKeyGranularScope(scope)) {
192
+ expanded.add(scope);
193
+ }
194
+ }
195
+ return expanded;
196
+ }
197
+ /** Whether a stored scope set satisfies a required granular scope. Empty stored = full access. */
198
+ export function satisfiesApiKeyScope(stored, required) {
199
+ if (stored.length === 0) {
200
+ return true;
201
+ }
202
+ const expanded = expandApiKeyScopes(stored);
203
+ if (expanded.has(required)) {
204
+ return true;
205
+ }
206
+ if (required.endsWith(':read')) {
207
+ const writeScope = required.replace(/:read$/u, ':write');
208
+ if (expanded.has(writeScope)) {
209
+ return true;
210
+ }
211
+ }
212
+ return false;
213
+ }
214
+ export function dedupeApiKeyScopes(scopes) {
215
+ return [...new Set(scopes)];
216
+ }
217
+ //# sourceMappingURL=apiKeyScopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiKeyScopes.js","sourceRoot":"","sources":["../src/apiKeyScopes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { z } from 'zod';
2
+ import type { PipelineKind } from './values.ts';
3
+ /** Where a pipeline record was converted to. Set once; read-only on the wire. */
4
+ export interface ConvertedTo {
5
+ readonly targetType: PipelineKind;
6
+ readonly targetId: string;
7
+ }
8
+ export declare const convertedToSchema: z.ZodType<ConvertedTo, unknown>;
9
+ export declare const convertedToWireSchema: z.ZodNullable<z.ZodObject<{
10
+ target_type: z.ZodEnum<{
11
+ deal: "deal";
12
+ enquiry: "enquiry";
13
+ opportunity: "opportunity";
14
+ partnership: "partnership";
15
+ raise: "raise";
16
+ }>;
17
+ target_id: z.ZodString;
18
+ }, z.core.$strip>>;
19
+ /** Body for `POST /v1/{pipeline}/:id/convert`. */
20
+ export interface ConvertPipelineRecordInput {
21
+ readonly targetType: PipelineKind;
22
+ readonly stageId?: string | undefined;
23
+ readonly companyId?: string | undefined;
24
+ readonly kind?: string | undefined;
25
+ readonly name?: string | undefined;
26
+ }
27
+ export declare const convertPipelineRecordBody: z.ZodObject<{
28
+ target_type: z.ZodEnum<{
29
+ deal: "deal";
30
+ enquiry: "enquiry";
31
+ opportunity: "opportunity";
32
+ partnership: "partnership";
33
+ raise: "raise";
34
+ }>;
35
+ stage_id: z.ZodOptional<z.ZodString>;
36
+ company_id: z.ZodOptional<z.ZodString>;
37
+ kind: z.ZodOptional<z.ZodString>;
38
+ name: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$strict>;
40
+ /** Enquiry convert accepts an empty body and defaults the target to a deal. */
41
+ export declare const convertEnquiryBody: z.ZodObject<{
42
+ target_type: z.ZodDefault<z.ZodEnum<{
43
+ deal: "deal";
44
+ enquiry: "enquiry";
45
+ opportunity: "opportunity";
46
+ partnership: "partnership";
47
+ raise: "raise";
48
+ }>>;
49
+ stage_id: z.ZodOptional<z.ZodString>;
50
+ company_id: z.ZodOptional<z.ZodString>;
51
+ kind: z.ZodOptional<z.ZodString>;
52
+ name: z.ZodOptional<z.ZodString>;
53
+ }, z.core.$strict>;
54
+ export declare function convertPipelineRecordRequest(input: ConvertPipelineRecordInput): Record<string, unknown>;
55
+ /** Builds the wire `converted_to` object from stored columns. */
56
+ export declare function convertedToForWire(convertedTargetType: string | null, convertedTargetId: string | null): ConvertedTo | null;
57
+ export declare function convertedToResponse(convertedTargetType: string | null, convertedTargetId: string | null): Record<string, unknown> | null;
58
+ //# sourceMappingURL=conversion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAU3D,CAAA;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;kBAKrB,CAAA;AAEb,kDAAkD;AAClD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;kBAMpC,CAAA;AAEF,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;kBAM7B,CAAA;AAEF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,0BAA0B,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,MAAM,GAAG,IAAI,EAClC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,WAAW,GAAG,IAAI,CASpB;AAED,wBAAgB,mBAAmB,CACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,EAClC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWhC"}
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import { PIPELINE_KINDS } from './values.js';
3
+ import { idSchema } from './wire.js';
4
+ export const convertedToSchema = z
5
+ .object({
6
+ target_type: z.enum(PIPELINE_KINDS),
7
+ target_id: idSchema,
8
+ })
9
+ .transform((wire) => ({
10
+ targetType: wire.target_type,
11
+ targetId: wire.target_id,
12
+ }));
13
+ export const convertedToWireSchema = z
14
+ .object({
15
+ target_type: z.enum(PIPELINE_KINDS),
16
+ target_id: idSchema,
17
+ })
18
+ .nullable();
19
+ export const convertPipelineRecordBody = z.strictObject({
20
+ target_type: z.enum(PIPELINE_KINDS),
21
+ stage_id: idSchema.optional(),
22
+ company_id: idSchema.optional(),
23
+ kind: z.string().optional(),
24
+ name: z.string().min(1).optional(),
25
+ });
26
+ /** Enquiry convert accepts an empty body and defaults the target to a deal. */
27
+ export const convertEnquiryBody = z.strictObject({
28
+ target_type: z.enum(PIPELINE_KINDS).default('deal'),
29
+ stage_id: idSchema.optional(),
30
+ company_id: idSchema.optional(),
31
+ kind: z.string().optional(),
32
+ name: z.string().min(1).optional(),
33
+ });
34
+ export function convertPipelineRecordRequest(input) {
35
+ return {
36
+ target_type: input.targetType,
37
+ ...(input.stageId === undefined ? {} : { stage_id: input.stageId }),
38
+ ...(input.companyId === undefined ? {} : { company_id: input.companyId }),
39
+ ...(input.kind === undefined ? {} : { kind: input.kind }),
40
+ ...(input.name === undefined ? {} : { name: input.name }),
41
+ };
42
+ }
43
+ /** Builds the wire `converted_to` object from stored columns. */
44
+ export function convertedToForWire(convertedTargetType, convertedTargetId) {
45
+ if (convertedTargetType === null || convertedTargetId === null) {
46
+ return null;
47
+ }
48
+ return {
49
+ targetType: convertedTargetType,
50
+ targetId: convertedTargetId,
51
+ };
52
+ }
53
+ export function convertedToResponse(convertedTargetType, convertedTargetId) {
54
+ const converted = convertedToForWire(convertedTargetType, convertedTargetId);
55
+ if (converted === null) {
56
+ return null;
57
+ }
58
+ return {
59
+ target_type: converted.targetType,
60
+ target_id: converted.targetId,
61
+ };
62
+ }
63
+ //# sourceMappingURL=conversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"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"}
package/dist/deal.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import type { ConvertedTo } from './conversion.ts';
2
3
  import type { CustomFieldValue, CustomFieldValues } from './customField.ts';
3
4
  import type { RecordTimestamps } from './wire.ts';
4
5
  /** Wire and write shapes for `/v1/deals`. */
@@ -19,6 +20,8 @@ export interface Deal extends RecordTimestamps {
19
20
  readonly summary: string;
20
21
  readonly tags: readonly string[];
21
22
  readonly externalId: string | null;
23
+ /** Non-null once this record has been converted to another pipeline type. */
24
+ readonly convertedTo: ConvertedTo | null;
22
25
  /** Workspace-defined fields, keyed by definition key. Always present (default `{}`). */
23
26
  readonly customFields: CustomFieldValues;
24
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,6CAA6C;AAE7C,MAAM,WAAW,IAAK,SAAQ,gBAAgB;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,wFAAwF;IACxF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAED,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAyC7C,CAAA;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBlE"}
1
+ {"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,6CAA6C;AAE7C,MAAM,WAAW,IAAK,SAAQ,gBAAgB;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;IACxC,wFAAwF;IACxF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAED,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CA8C7C,CAAA;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBlE"}
package/dist/deal.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { convertedToWireSchema } from './conversion.js';
2
3
  import { customFieldValuesBody, customFieldValuesSchema } from './customField.js';
3
4
  import { definedFields, idSchema, recordTimestamps } from './wire.js';
4
5
  export const dealSchema = z
@@ -18,6 +19,7 @@ export const dealSchema = z
18
19
  summary: z.string(),
19
20
  tags: z.array(z.string()),
20
21
  external_id: z.string().nullable(),
22
+ converted_to: convertedToWireSchema,
21
23
  custom_fields: customFieldValuesSchema,
22
24
  ...recordTimestamps,
23
25
  })
@@ -37,6 +39,9 @@ export const dealSchema = z
37
39
  summary: wire.summary,
38
40
  tags: wire.tags,
39
41
  externalId: wire.external_id,
42
+ convertedTo: wire.converted_to === null
43
+ ? null
44
+ : { targetType: wire.converted_to.target_type, targetId: wire.converted_to.target_id },
40
45
  customFields: wire.custom_fields,
41
46
  createdAt: wire.created_at,
42
47
  updatedAt: wire.updated_at,
package/dist/deal.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"deal.js","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deal.js","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"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"}
package/dist/enquiry.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import type { ConvertedTo } from './conversion.ts';
2
3
  import type { CustomFieldValue, CustomFieldValues } from './customField.ts';
3
4
  import type { RecordTimestamps } from './wire.ts';
4
5
  /** Wire and write shapes for `/v1/enquiries`. */
@@ -13,6 +14,8 @@ export interface Enquiry extends RecordTimestamps {
13
14
  readonly ownerId: string | null;
14
15
  /** Non-null once the enquiry has been converted to a Deal; nulled if that deal is deleted. */
15
16
  readonly convertedDealId: string | null;
17
+ /** Non-null once this record has been converted to another pipeline type. */
18
+ readonly convertedTo: ConvertedTo | null;
16
19
  readonly personIds: readonly string[];
17
20
  readonly summary: string;
18
21
  readonly tags: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"enquiry.d.ts","sourceRoot":"","sources":["../src/enquiry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,iDAAiD;AAEjD,MAAM,WAAW,OAAQ,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,wFAAwF;IACxF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAED,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CA+BnD,CAAA;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAaxE"}
1
+ {"version":3,"file":"enquiry.d.ts","sourceRoot":"","sources":["../src/enquiry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,iDAAiD;AAEjD,MAAM,WAAW,OAAQ,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,wFAAwF;IACxF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAED,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAoCnD,CAAA;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAaxE"}
package/dist/enquiry.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { convertedToWireSchema } from './conversion.js';
2
3
  import { customFieldValuesBody, customFieldValuesSchema } from './customField.js';
3
4
  import { definedFields, idSchema, recordTimestamps } from './wire.js';
4
5
  export const enquirySchema = z
@@ -10,6 +11,7 @@ export const enquirySchema = z
10
11
  company_id: idSchema.nullable(),
11
12
  owner_id: idSchema.nullable(),
12
13
  converted_deal_id: idSchema.nullable(),
14
+ converted_to: convertedToWireSchema,
13
15
  person_ids: z.array(idSchema),
14
16
  summary: z.string(),
15
17
  tags: z.array(z.string()),
@@ -24,6 +26,9 @@ export const enquirySchema = z
24
26
  companyId: wire.company_id,
25
27
  ownerId: wire.owner_id,
26
28
  convertedDealId: wire.converted_deal_id,
29
+ convertedTo: wire.converted_to === null
30
+ ? null
31
+ : { targetType: wire.converted_to.target_type, targetId: wire.converted_to.target_id },
27
32
  personIds: wire.person_ids,
28
33
  summary: wire.summary,
29
34
  tags: wire.tags,
@@ -1 +1 @@
1
- {"version":3,"file":"enquiry.js","sourceRoot":"","sources":["../src/enquiry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAEjF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAuBrE,MAAM,CAAC,MAAM,aAAa,GAAgC,CAAC;KACxD,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;IAC7B,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,EAAE;IACtC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,uBAAuB;IACtC,GAAG,gBAAgB;CACpB,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAW,EAAE,CAAC,CAAC;IAClB,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,eAAe,EAAE,IAAI,CAAC,iBAAiB;IACvC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,YAAY,EAAE,IAAI,CAAC,aAAa;IAChC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;CAC3B,CAAC,CACH,CAAA;AAsBH,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EACX,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;KAC3F,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"enquiry.js","sourceRoot":"","sources":["../src/enquiry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAEjF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAyBrE,MAAM,CAAC,MAAM,aAAa,GAAgC,CAAC;KACxD,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;IAC7B,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,EAAE;IACtC,YAAY,EAAE,qBAAqB;IACnC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,uBAAuB;IACtC,GAAG,gBAAgB;CACpB,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAW,EAAE,CAAC,CAAC;IAClB,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,eAAe,EAAE,IAAI,CAAC,iBAAiB;IACvC,WAAW,EACT,IAAI,CAAC,YAAY,KAAK,IAAI;QACxB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;IAC1F,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,YAAY,EAAE,IAAI,CAAC,aAAa;IAChC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;CAC3B,CAAC,CACH,CAAA;AAsBH,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EACX,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;KAC3F,CAAC,CAAA;AACJ,CAAC"}