@cat-factory/integrations 0.32.0 → 0.34.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 (59) hide show
  1. package/dist/index.d.ts +4 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +4 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/modules/documents/ConfluenceProvider.d.ts +1 -2
  6. package/dist/modules/documents/ConfluenceProvider.d.ts.map +1 -1
  7. package/dist/modules/documents/DocumentConnectionService.d.ts +11 -28
  8. package/dist/modules/documents/DocumentConnectionService.d.ts.map +1 -1
  9. package/dist/modules/documents/DocumentConnectionService.js +12 -71
  10. package/dist/modules/documents/DocumentConnectionService.js.map +1 -1
  11. package/dist/modules/documents/DocumentImportService.d.ts +4 -7
  12. package/dist/modules/documents/DocumentImportService.d.ts.map +1 -1
  13. package/dist/modules/documents/DocumentImportService.js +6 -9
  14. package/dist/modules/documents/DocumentImportService.js.map +1 -1
  15. package/dist/modules/documents/FigmaProvider.d.ts +4 -5
  16. package/dist/modules/documents/FigmaProvider.d.ts.map +1 -1
  17. package/dist/modules/documents/FigmaProvider.js +22 -21
  18. package/dist/modules/documents/FigmaProvider.js.map +1 -1
  19. package/dist/modules/documents/GitHubDocsProvider.d.ts +1 -2
  20. package/dist/modules/documents/GitHubDocsProvider.d.ts.map +1 -1
  21. package/dist/modules/documents/LinearDocumentProvider.d.ts +1 -2
  22. package/dist/modules/documents/LinearDocumentProvider.d.ts.map +1 -1
  23. package/dist/modules/documents/NotionProvider.d.ts +1 -2
  24. package/dist/modules/documents/NotionProvider.d.ts.map +1 -1
  25. package/dist/modules/documents/{ClaudeDesignProvider.d.ts → ZeplinProvider.d.ts} +12 -11
  26. package/dist/modules/documents/ZeplinProvider.d.ts.map +1 -0
  27. package/dist/modules/documents/ZeplinProvider.js +126 -0
  28. package/dist/modules/documents/ZeplinProvider.js.map +1 -0
  29. package/dist/modules/documents/design.logic.d.ts +60 -0
  30. package/dist/modules/documents/design.logic.d.ts.map +1 -0
  31. package/dist/modules/documents/design.logic.js +0 -0
  32. package/dist/modules/documents/design.logic.js.map +1 -0
  33. package/dist/modules/documents/figma.logic.d.ts +30 -9
  34. package/dist/modules/documents/figma.logic.d.ts.map +1 -1
  35. package/dist/modules/documents/figma.logic.js +51 -36
  36. package/dist/modules/documents/figma.logic.js.map +1 -1
  37. package/dist/modules/documents/zeplin.logic.d.ts +102 -0
  38. package/dist/modules/documents/zeplin.logic.d.ts.map +1 -0
  39. package/dist/modules/documents/zeplin.logic.js +193 -0
  40. package/dist/modules/documents/zeplin.logic.js.map +1 -0
  41. package/dist/modules/environments/EnvironmentProvisioningService.d.ts +19 -0
  42. package/dist/modules/environments/EnvironmentProvisioningService.d.ts.map +1 -1
  43. package/dist/modules/environments/EnvironmentProvisioningService.js +82 -12
  44. package/dist/modules/environments/EnvironmentProvisioningService.js.map +1 -1
  45. package/dist/modules/kubernetes/KubernetesRunnerTransport.d.ts.map +1 -1
  46. package/dist/modules/kubernetes/KubernetesRunnerTransport.js +22 -4
  47. package/dist/modules/kubernetes/KubernetesRunnerTransport.js.map +1 -1
  48. package/dist/modules/kubernetes/kubernetes.logic.d.ts +29 -0
  49. package/dist/modules/kubernetes/kubernetes.logic.d.ts.map +1 -1
  50. package/dist/modules/kubernetes/kubernetes.logic.js +121 -0
  51. package/dist/modules/kubernetes/kubernetes.logic.js.map +1 -1
  52. package/package.json +3 -3
  53. package/dist/modules/documents/ClaudeDesignProvider.d.ts.map +0 -1
  54. package/dist/modules/documents/ClaudeDesignProvider.js +0 -163
  55. package/dist/modules/documents/ClaudeDesignProvider.js.map +0 -1
  56. package/dist/modules/documents/claudeDesign.logic.d.ts +0 -88
  57. package/dist/modules/documents/claudeDesign.logic.d.ts.map +0 -1
  58. package/dist/modules/documents/claudeDesign.logic.js +0 -317
  59. package/dist/modules/documents/claudeDesign.logic.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubDocsProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/GitHubDocsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAe5B,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,YAAY,CAAA;IAC1B,8EAA8E;IAC9E,aAAa,EAAE,4BAA4B,CAAA;CAC5C;AAED,qBAAa,kBAAmB,YAAW,sBAAsB;IAInD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;MAAyB;IAE5C,YAA6B,IAAI,EAAE,8BAA8B,EAAI;IAErE;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,oBAAoB,CAErE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAEK,aAAa,CACjB,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAoB1B;IAEK,MAAM,CACV,YAAY,EAAE,mBAAmB,EACjC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAkCjC;IAED;;;;OAIG;YACW,qBAAqB;CAUpC"}
1
+ {"version":3,"file":"GitHubDocsProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/GitHubDocsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAe5B,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,YAAY,CAAA;IAC1B,8EAA8E;IAC9E,aAAa,EAAE,4BAA4B,CAAA;CAC5C;AAED,qBAAa,kBAAmB,YAAW,sBAAsB;IAInD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;MAAyB;IAE5C,YAA6B,IAAI,EAAE,8BAA8B,EAAI;IAErE;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,oBAAoB,CAErE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAEK,aAAa,CACjB,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAoB1B;IAEK,MAAM,CACV,YAAY,EAAE,mBAAmB,EACjC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAkCjC;IAED;;;;OAIG;YACW,qBAAqB;CAUpC"}
@@ -2,7 +2,7 @@ import { type DocumentContent, type DocumentCredentials, type DocumentSearchResu
2
2
  export declare class LinearDocumentProvider implements DocumentSourceProvider {
3
3
  readonly kind: 'linear';
4
4
  readonly descriptor: {
5
- source: "claude-design" | "confluence" | "figma" | "github" | "linear" | "notion";
5
+ source: "confluence" | "figma" | "github" | "linear" | "notion" | "zeplin";
6
6
  label: string;
7
7
  icon: string;
8
8
  credentialFields: {
@@ -15,7 +15,6 @@ export declare class LinearDocumentProvider implements DocumentSourceProvider {
15
15
  refLabel: string;
16
16
  refPlaceholder: string;
17
17
  searchable?: boolean | undefined;
18
- credentialScope?: "user" | "workspace" | undefined;
19
18
  };
20
19
  normalizeConnection(input: DocumentCredentials): NormalizedConnection;
21
20
  parseRef(input: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"LinearDocumentProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/LinearDocumentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAsB5B,qBAAa,sBAAuB,YAAW,sBAAsB;IACnE,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;MAAyB;IAE5C,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAMpE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAM1B;IAEK,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAO7F;CACF"}
1
+ {"version":3,"file":"LinearDocumentProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/LinearDocumentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAsB5B,qBAAa,sBAAuB,YAAW,sBAAsB;IACnE,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;MAAyB;IAE5C,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAMpE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAM1B;IAEK,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAO7F;CACF"}
@@ -7,7 +7,7 @@ export declare class NotionApiError extends Error {
7
7
  export declare class NotionProvider implements DocumentSourceProvider {
8
8
  readonly kind: 'notion';
9
9
  readonly descriptor: {
10
- source: "claude-design" | "confluence" | "figma" | "github" | "linear" | "notion";
10
+ source: "confluence" | "figma" | "github" | "linear" | "notion" | "zeplin";
11
11
  label: string;
12
12
  icon: string;
13
13
  credentialFields: {
@@ -20,7 +20,6 @@ export declare class NotionProvider implements DocumentSourceProvider {
20
20
  refLabel: string;
21
21
  refPlaceholder: string;
22
22
  searchable?: boolean | undefined;
23
- credentialScope?: "user" | "workspace" | undefined;
24
23
  };
25
24
  normalizeConnection(input: DocumentCredentials): NormalizedConnection;
26
25
  parseRef(input: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"NotionProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/NotionProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAuB5B,yEAAyE;AACzE,qBAAa,cAAe,SAAQ,KAAK;IAErC,QAAQ,CAAC,MAAM,EAAE,MAAM;IADzB,YACW,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EAIhB;CACF;AAkGD,qBAAa,cAAe,YAAW,sBAAsB;IAC3D,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;MAAoB;IAEvC,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAMpE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAe1B;IAEK,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA6B7F;IAED,iFAAiF;YACnE,WAAW;YAqBX,GAAG;CA+BlB"}
1
+ {"version":3,"file":"NotionProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/NotionProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAuB5B,yEAAyE;AACzE,qBAAa,cAAe,SAAQ,KAAK;IAErC,QAAQ,CAAC,MAAM,EAAE,MAAM;IADzB,YACW,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EAIhB;CACF;AAkGD,qBAAa,cAAe,YAAW,sBAAsB;IAC3D,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;MAAoB;IAEvC,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAMpE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAe1B;IAEK,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA6B7F;IAED,iFAAiF;YACnE,WAAW;YAqBX,GAAG;CA+BlB"}
@@ -1,8 +1,13 @@
1
1
  import { type DocumentContent, type DocumentCredentials, type DocumentSourceProvider, type NormalizedConnection } from '@cat-factory/kernel';
2
- export declare class ClaudeDesignProvider implements DocumentSourceProvider {
3
- readonly kind: 'claude-design';
2
+ /** Carries the HTTP status so callers can surface a meaningful error. */
3
+ export declare class ZeplinApiError extends Error {
4
+ readonly status: number;
5
+ constructor(status: number, message: string);
6
+ }
7
+ export declare class ZeplinProvider implements DocumentSourceProvider {
8
+ readonly kind: 'zeplin';
4
9
  readonly descriptor: {
5
- source: "claude-design" | "confluence" | "figma" | "github" | "linear" | "notion";
10
+ source: "confluence" | "figma" | "github" | "linear" | "notion" | "zeplin";
6
11
  label: string;
7
12
  icon: string;
8
13
  credentialFields: {
@@ -15,18 +20,14 @@ export declare class ClaudeDesignProvider implements DocumentSourceProvider {
15
20
  refLabel: string;
16
21
  refPlaceholder: string;
17
22
  searchable?: boolean | undefined;
18
- credentialScope?: "user" | "workspace" | undefined;
19
23
  };
20
24
  normalizeConnection(input: DocumentCredentials): NormalizedConnection;
21
25
  parseRef(input: string): string | null;
22
26
  fetchDocument(credentials: DocumentCredentials, externalId: string): Promise<DocumentContent>;
23
- /** List a project's files, then fetch the manifest + a bounded slice of HTML previews. */
24
- private fetchProjectFiles;
25
- /** Fetch one file's textual content (raw, or unwrapped from a `{ content }` JSON body). */
26
- private fetchFile;
27
- /** Name the document: the manifest's `name`, else the file path, else the project id. */
28
- private deriveName;
27
+ /** Fetch the single referenced screen, or a bounded list of the project's screens. */
28
+ private fetchScreens;
29
+ private bestEffort;
29
30
  private headers;
30
31
  private get;
31
32
  }
32
- //# sourceMappingURL=ClaudeDesignProvider.d.ts.map
33
+ //# sourceMappingURL=ZeplinProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZeplinProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/ZeplinProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAkC5B,yEAAyE;AACzE,qBAAa,cAAe,SAAQ,KAAK;IAErC,QAAQ,CAAC,MAAM,EAAE,MAAM;IADzB,YACW,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EAIhB;CACF;AAID,qBAAa,cAAe,YAAW,sBAAsB;IAC3D,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;MAAoB;IAEvC,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAMpE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAoD1B;IAED,sFAAsF;YACxE,YAAY;YAsBZ,UAAU;IAQxB,OAAO,CAAC,OAAO;YAQD,GAAG;CAuBlB"}
@@ -0,0 +1,126 @@
1
+ import { ValidationError, } from '@cat-factory/kernel';
2
+ import { renderDesignContext } from './design.logic.js';
3
+ import { DocumentHttpError, createHostPinnedFetch, readCappedText } from './http.js';
4
+ import { MAX_SCREENS, ZEPLIN_API_HOST, ZEPLIN_DESCRIPTOR, buildZeplinDesignContext, parseZeplinRef, splitZeplinExternalId, unwrapArray, unwrapObject, } from './zeplin.logic.js';
5
+ // ZeplinProvider: the document-source provider for Zeplin, the design→dev handoff tool.
6
+ // It authenticates with a per-workspace personal access token (`Authorization: Bearer`),
7
+ // reads a project's screens + design-system (components + tokens) over the REST API, and
8
+ // maps them into the shared `DesignContext` the planner + `.cat-context/` materialisation
9
+ // consume. All Zeplin-specific *pure* logic (ref parsing, the host-pin guard, the JSON →
10
+ // DesignContext mapping) lives in `zeplin.logic.ts`; this class is the thin `fetch` shell.
11
+ //
12
+ // PROVISIONAL API SHAPE: the endpoint paths below target the documented Zeplin REST API;
13
+ // the host is pinned and the mapping is unit-tested independent of the network, but the
14
+ // exact paths/field names should be re-verified against docs.zeplin.dev when built —
15
+ // treat them as the intended shape, not a frozen contract (mirrors Figma's note).
16
+ const API_BASE = `https://${ZEPLIN_API_HOST}/v1`;
17
+ const USER_AGENT = 'cat-factory';
18
+ /** Hard cap on the bytes read off any response body, to protect the isolate. */
19
+ const MAX_RESPONSE_BYTES = 5_000_000;
20
+ /** Carries the HTTP status so callers can surface a meaningful error. */
21
+ export class ZeplinApiError extends Error {
22
+ status;
23
+ constructor(status, message) {
24
+ super(message);
25
+ this.status = status;
26
+ this.name = 'ZeplinApiError';
27
+ }
28
+ }
29
+ const safeFetch = createHostPinnedFetch({ host: ZEPLIN_API_HOST, label: 'Zeplin' });
30
+ export class ZeplinProvider {
31
+ kind = 'zeplin';
32
+ descriptor = ZEPLIN_DESCRIPTOR;
33
+ normalizeConnection(input) {
34
+ const apiToken = input.apiToken?.trim();
35
+ if (!apiToken) {
36
+ throw new ValidationError('Zeplin requires a personal access token');
37
+ }
38
+ return { credentials: { apiToken }, label: 'Zeplin' };
39
+ }
40
+ parseRef(input) {
41
+ return parseZeplinRef(input);
42
+ }
43
+ async fetchDocument(credentials, externalId) {
44
+ const { projectId, screenId } = splitZeplinExternalId(externalId);
45
+ if (!projectId) {
46
+ throw new ZeplinApiError(400, `Zeplin ref is missing a project id: ${externalId}`);
47
+ }
48
+ // Primary read: validates the token + that the project exists (throws on a bad token).
49
+ const project = await this.get(credentials, `/projects/${encodeURIComponent(projectId)}`);
50
+ // Screens are the PRIMARY design content, so their read is mandatory: a failed fetch
51
+ // throws and fails the import rather than silently producing an empty success (an
52
+ // empty project legitimately returns []). Components and tokens are supplementary
53
+ // (often plan-gated), so a single unreadable section is dropped, not fatal.
54
+ const screens = await this.fetchScreens(credentials, projectId, screenId);
55
+ const components = await this.bestEffort(() => this.get(credentials, `/projects/${encodeURIComponent(projectId)}/components`));
56
+ const designTokens = await this.bestEffort(() => this.get(credentials, `/projects/${encodeURIComponent(projectId)}/design_tokens`));
57
+ const context = buildZeplinDesignContext({
58
+ externalId,
59
+ projectName: project.name ?? projectId,
60
+ screens,
61
+ components: unwrapArray(components, 'components'),
62
+ designTokens,
63
+ });
64
+ const body = renderDesignContext(context);
65
+ if (!body.trim()) {
66
+ // The project read succeeded but nothing renderable came back (no screens, and
67
+ // components/tokens unavailable). Surface it as an error instead of persisting an
68
+ // empty "successful" import the user would mistake for real design context.
69
+ throw new ZeplinApiError(404, `Zeplin import '${externalId}' produced no design content`);
70
+ }
71
+ return {
72
+ externalId,
73
+ title: context.title,
74
+ url: context.url,
75
+ body,
76
+ };
77
+ }
78
+ /** Fetch the single referenced screen, or a bounded list of the project's screens. */
79
+ async fetchScreens(credentials, projectId, screenId) {
80
+ if (screenId) {
81
+ const screen = unwrapObject(await this.get(credentials, `/projects/${encodeURIComponent(projectId)}/screens/${encodeURIComponent(screenId)}`), 'screen');
82
+ return screen ? [screen] : [];
83
+ }
84
+ const listed = await this.get(credentials, `/projects/${encodeURIComponent(projectId)}/screens?limit=${MAX_SCREENS}`);
85
+ return unwrapArray(listed, 'screens');
86
+ }
87
+ async bestEffort(fn) {
88
+ try {
89
+ return await fn();
90
+ }
91
+ catch {
92
+ return null;
93
+ }
94
+ }
95
+ headers(credentials) {
96
+ return {
97
+ authorization: `Bearer ${credentials.apiToken ?? ''}`,
98
+ accept: 'application/json',
99
+ 'user-agent': USER_AGENT,
100
+ };
101
+ }
102
+ async get(credentials, path) {
103
+ const url = `${API_BASE}${path}`;
104
+ let res;
105
+ try {
106
+ res = await safeFetch(url, { method: 'GET', headers: this.headers(credentials) });
107
+ }
108
+ catch (err) {
109
+ if (err instanceof DocumentHttpError)
110
+ throw new ZeplinApiError(err.status, err.message);
111
+ throw err;
112
+ }
113
+ if (!res.ok) {
114
+ const text = await readCappedText(res, MAX_RESPONSE_BYTES, 'Zeplin').catch(() => '');
115
+ throw new ZeplinApiError(res.status, `Zeplin GET ${url} → ${res.status}: ${text.slice(0, 300)}`);
116
+ }
117
+ const text = await readCappedText(res, MAX_RESPONSE_BYTES, 'Zeplin');
118
+ try {
119
+ return JSON.parse(text);
120
+ }
121
+ catch {
122
+ throw new ZeplinApiError(502, `Zeplin returned an unparseable body for ${path}`);
123
+ }
124
+ }
125
+ }
126
+ //# sourceMappingURL=ZeplinProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZeplinProvider.js","sourceRoot":"","sources":["../../../src/modules/documents/ZeplinProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /** A named sub-section of a block (e.g. "Layout", "Text content"). */
2
+ export interface DesignSection {
3
+ heading: string;
4
+ lines: string[];
5
+ }
6
+ /** A top-level visual unit: a Figma frame, a Zeplin screen, a Penpot board. */
7
+ export interface DesignBlock {
8
+ /** The block's name/title. */
9
+ title: string;
10
+ /** A short inline qualifier appended to the heading, e.g. a `(390×844)` size. */
11
+ meta?: string;
12
+ /** Ordered sub-sections (layout tree, text content, …). */
13
+ sections: DesignSection[];
14
+ }
15
+ /** A design-system component the design instantiates or defines. */
16
+ export interface DesignComponent {
17
+ name: string;
18
+ /** Optional grouping label (e.g. Zeplin's component section, a Figma page). */
19
+ group?: string;
20
+ /** Optional one-line note (variants, description). */
21
+ note?: string;
22
+ }
23
+ /** A design token: a colour / spacing / typography value, optionally scoped. */
24
+ export interface DesignToken {
25
+ collection?: string;
26
+ mode?: string;
27
+ name: string;
28
+ value: string;
29
+ }
30
+ /** A best-effort reference line (e.g. a short-lived rendered-preview URL). */
31
+ export interface DesignReference {
32
+ label: string;
33
+ url: string;
34
+ }
35
+ /** The fully-normalised design context a provider hands the shared renderer. */
36
+ export interface DesignContext {
37
+ /** Document title (used as the `DocumentContent.title`). */
38
+ title: string;
39
+ /** Canonical web URL of the document on the source. */
40
+ url: string;
41
+ blocks: DesignBlock[];
42
+ components: DesignComponent[];
43
+ tokens: DesignToken[];
44
+ references: DesignReference[];
45
+ }
46
+ /**
47
+ * The ` (W×H)` size qualifier appended to a block heading, shared by every source so a
48
+ * Figma frame and a Zeplin screen render their dimensions identically. Returns undefined
49
+ * when either dimension is missing, so the caller omits the qualifier.
50
+ */
51
+ export declare function dimensionMeta(width?: number | null, height?: number | null): string | undefined;
52
+ /**
53
+ * Render a {@link DesignContext} to the Markdown body the agent reads from
54
+ * `.cat-context/<slug>.md`: each block as a `## <title>` with its sub-sections, then a
55
+ * single de-duplicated `### Components`, the `### Design tokens`, and any best-effort
56
+ * `### References`. Empty groups are dropped so a source that can't supply tokens (e.g.
57
+ * a non-Enterprise Figma plan) simply omits that section rather than emitting a stub.
58
+ */
59
+ export declare function renderDesignContext(ctx: DesignContext): string;
60
+ //# sourceMappingURL=design.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/design.logic.ts"],"names":[],"mappings":"AAQA,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2DAA2D;IAC3D,QAAQ,EAAE,aAAa,EAAE,CAAA;CAC1B;AAED,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAG/F;AA2BD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA4B9D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design.logic.js","sourceRoot":"","sources":["../../../src/modules/documents/design.logic.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { DocumentSourceDescriptor } from '@cat-factory/kernel';
2
+ import { type DesignBlock, type DesignComponent, type DesignContext, type DesignToken } from './design.logic.js';
2
3
  /** Figma's REST API host. The PAT is sent to this host only — see {@link assertSafeFigmaUrl}. */
3
4
  export declare const FIGMA_API_HOST = "api.figma.com";
4
5
  /** What the connect UI renders, and which credentials the provider needs. */
@@ -64,12 +65,14 @@ export interface FigmaComponentMap {
64
65
  } | undefined;
65
66
  }
66
67
  /**
67
- * Convert a fetched Figma node (a frame or a whole file's document) into the
68
- * lightweight Markdown the planner/agent consume: a `## <name>` heading, a
69
- * `### Layout` bullet tree, the `### Text content`, and the distinct
70
- * `### Components used` (matched against the repo's components by the agent).
68
+ * Map the fetched Figma frames into the source-neutral {@link DesignBlock}s: one block
69
+ * per frame, with a `Layout` bullet tree and the frame's `Text content`. The
70
+ * design-system components are collected separately ({@link figmaComponents}) into the
71
+ * shared global `### Components` section rather than per-frame.
71
72
  */
72
- export declare function figmaNodesToMarkdown(roots: FigmaNode[], components?: FigmaComponentMap): string;
73
+ export declare function figmaBlocks(roots: FigmaNode[]): DesignBlock[];
74
+ /** Collect the distinct design-system components instantiated across the frames. */
75
+ export declare function figmaComponents(roots: FigmaNode[], components?: FigmaComponentMap): DesignComponent[];
73
76
  interface FigmaVariable {
74
77
  name?: string;
75
78
  resolvedType?: string;
@@ -89,10 +92,28 @@ export interface FigmaVariablesMeta {
89
92
  variableCollections?: Record<string, FigmaVariableCollection | undefined>;
90
93
  }
91
94
  /**
92
- * Convert the Figma local-variables payload into a `### Design tokens` section,
93
- * one line per `collection › mode › name = value`. Returns '' when there are no
94
- * variables (so the caller drops the section entirely).
95
+ * Map the Figma local-variables payload into source-neutral {@link DesignToken}s
96
+ * (`collection › mode › name = value`). Empty when there are no variables, so the
97
+ * shared renderer drops the `### Design tokens` section entirely.
95
98
  */
96
- export declare function figmaVariablesToMarkdown(meta: FigmaVariablesMeta | undefined): string;
99
+ export declare function figmaTokens(meta: FigmaVariablesMeta | undefined | null): DesignToken[];
100
+ export interface FigmaContextInput {
101
+ /** The composite external id (`<fileKey>` or `<fileKey>:<nodeId>`). */
102
+ externalId: string;
103
+ /** The Figma file's name (from the API), used for the document title. */
104
+ fileName: string;
105
+ /** The frame/node id when this is a node link (drives the title shape). */
106
+ nodeId?: string;
107
+ /** The fetched frame roots. */
108
+ roots: FigmaNode[];
109
+ /** The `componentId → { name }` map returned alongside the nodes. */
110
+ components: FigmaComponentMap;
111
+ /** Local-variables payload, or null when the plan doesn't expose it. */
112
+ variablesMeta?: FigmaVariablesMeta | null;
113
+ /** Best-effort short-lived rendered-preview URL, or null. */
114
+ previewUrl?: string | null;
115
+ }
116
+ /** Assemble the fetched Figma pieces into the shared {@link DesignContext}. */
117
+ export declare function buildFigmaDesignContext(input: FigmaContextInput): DesignContext;
97
118
  export {};
98
119
  //# sourceMappingURL=figma.logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"figma.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/figma.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AASnE,iGAAiG;AACjG,eAAO,MAAM,cAAc,kBAAkB,CAAA;AAE7C,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,EAAE,wBAiB9B,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAID;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4B1D;AAED,8FAA8F;AAC9F,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAI7F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKtD;AAID,kFAAkF;AAClF,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAChE,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;CACvB;AAED,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;CAC5C;AAqDD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAAE,EAClB,UAAU,GAAE,iBAAsB,GACjC,MAAM,CA8BR;AAID,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACvC;AAED,UAAU,uBAAuB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC7C;AAED,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC,CAAA;IACrD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,SAAS,CAAC,CAAA;CAC1E;AAoBD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAoBrF"}
1
+ {"version":3,"file":"figma.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/figma.logic.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { dimensionMeta, } from './design.logic.js';
1
2
  import { assertHostPinned } from './http.js';
2
3
  // Figma-specific pure logic, kept out of the provider shell so it is unit-testable
3
4
  // without a live workspace: parsing/canonicalising a file+node ref out of user input,
@@ -121,10 +122,7 @@ export function figmaUrlFor(externalId) {
121
122
  const MAX_TREE_DEPTH = 6;
122
123
  const MAX_TREE_NODES = 400;
123
124
  function dimensionLabel(node) {
124
- const box = node.absoluteBoundingBox;
125
- if (!box || box.width == null || box.height == null)
126
- return '';
127
- return ` (${Math.round(box.width)}×${Math.round(box.height)})`;
125
+ return dimensionMeta(node.absoluteBoundingBox?.width, node.absoluteBoundingBox?.height) ?? '';
128
126
  }
129
127
  /**
130
128
  * Render a node and its descendants as an indented bullet tree (name + type +
@@ -167,38 +165,37 @@ function collectComponents(node, components, out) {
167
165
  collectComponents(child, components, out);
168
166
  }
169
167
  /**
170
- * Convert a fetched Figma node (a frame or a whole file's document) into the
171
- * lightweight Markdown the planner/agent consume: a `## <name>` heading, a
172
- * `### Layout` bullet tree, the `### Text content`, and the distinct
173
- * `### Components used` (matched against the repo's components by the agent).
168
+ * Map the fetched Figma frames into the source-neutral {@link DesignBlock}s: one block
169
+ * per frame, with a `Layout` bullet tree and the frame's `Text content`. The
170
+ * design-system components are collected separately ({@link figmaComponents}) into the
171
+ * shared global `### Components` section rather than per-frame.
174
172
  */
175
- export function figmaNodesToMarkdown(roots, components = {}) {
176
- const sections = [];
177
- for (const root of roots) {
178
- const lines = [];
179
- lines.push(`## ${root.name?.trim() || '(unnamed frame)'}${dimensionLabel(root)}`);
173
+ export function figmaBlocks(roots) {
174
+ return roots.map((root) => {
180
175
  const layout = [];
181
176
  // One counter shared across every top-level child so MAX_TREE_NODES bounds the whole
182
177
  // frame, not each subtree — a wide frame can't blow past the cap one branch at a time.
183
178
  const counter = { n: 0 };
184
179
  for (const child of root.children ?? [])
185
180
  renderLayout(child, 0, counter, layout);
186
- if (layout.length) {
187
- lines.push('', '### Layout', ...layout);
188
- }
189
181
  const text = [];
190
182
  collectText(root, text);
191
- if (text.length) {
192
- lines.push('', '### Text content', ...text.map((t) => `- ${t.replace(/\s+/g, ' ')}`));
193
- }
194
- const comps = new Set();
195
- collectComponents(root, components, comps);
196
- if (comps.size) {
197
- lines.push('', '### Components used', ...[...comps].sort().map((c) => `- ${c}`));
198
- }
199
- sections.push(lines.join('\n').trim());
200
- }
201
- return sections.join('\n\n').trim();
183
+ return {
184
+ title: root.name?.trim() || '(unnamed frame)',
185
+ meta: dimensionLabel(root),
186
+ sections: [
187
+ { heading: 'Layout', lines: layout },
188
+ { heading: 'Text content', lines: text.map((t) => `- ${t.replace(/\s+/g, ' ')}`) },
189
+ ],
190
+ };
191
+ });
192
+ }
193
+ /** Collect the distinct design-system components instantiated across the frames. */
194
+ export function figmaComponents(roots, components = {}) {
195
+ const names = new Set();
196
+ for (const root of roots)
197
+ collectComponents(root, components, names);
198
+ return [...names].map((name) => ({ name }));
202
199
  }
203
200
  /** Render a single variable value (colour object → hex/rgba, else compact JSON). */
204
201
  function renderVariableValue(value) {
@@ -221,14 +218,14 @@ function renderVariableValue(value) {
221
218
  return JSON.stringify(value);
222
219
  }
223
220
  /**
224
- * Convert the Figma local-variables payload into a `### Design tokens` section,
225
- * one line per `collection › mode › name = value`. Returns '' when there are no
226
- * variables (so the caller drops the section entirely).
221
+ * Map the Figma local-variables payload into source-neutral {@link DesignToken}s
222
+ * (`collection › mode › name = value`). Empty when there are no variables, so the
223
+ * shared renderer drops the `### Design tokens` section entirely.
227
224
  */
228
- export function figmaVariablesToMarkdown(meta) {
225
+ export function figmaTokens(meta) {
229
226
  const variables = meta?.variables ?? {};
230
227
  const collections = meta?.variableCollections ?? {};
231
- const lines = [];
228
+ const tokens = [];
232
229
  for (const variable of Object.values(variables)) {
233
230
  if (!variable?.name)
234
231
  continue;
@@ -239,11 +236,29 @@ export function figmaVariablesToMarkdown(meta) {
239
236
  const modes = collection?.modes ?? [];
240
237
  for (const [modeId, value] of Object.entries(variable.valuesByMode ?? {})) {
241
238
  const modeName = modes.find((m) => m.modeId === modeId)?.name ?? 'default';
242
- lines.push(`- ${collectionName} › ${modeName} › ${variable.name} = ${renderVariableValue(value)}`);
239
+ tokens.push({
240
+ collection: collectionName,
241
+ mode: modeName,
242
+ name: variable.name,
243
+ value: renderVariableValue(value),
244
+ });
243
245
  }
244
246
  }
245
- if (!lines.length)
246
- return '';
247
- return ['### Design tokens', ...lines.sort()].join('\n');
247
+ return tokens;
248
+ }
249
+ /** Assemble the fetched Figma pieces into the shared {@link DesignContext}. */
250
+ export function buildFigmaDesignContext(input) {
251
+ const { fileKey } = splitFigmaExternalId(input.externalId);
252
+ const title = input.nodeId
253
+ ? `${input.fileName || fileKey} — ${input.roots[0]?.name?.trim() || input.nodeId}`
254
+ : input.fileName || fileKey;
255
+ return {
256
+ title,
257
+ url: figmaUrlFor(input.externalId),
258
+ blocks: figmaBlocks(input.roots),
259
+ components: figmaComponents(input.roots, input.components),
260
+ tokens: figmaTokens(input.variablesMeta),
261
+ references: input.previewUrl ? [{ label: 'Rendered preview', url: input.previewUrl }] : [],
262
+ };
248
263
  }
249
264
  //# sourceMappingURL=figma.logic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"figma.logic.js","sourceRoot":"","sources":["../../../src/modules/documents/figma.logic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"figma.logic.js","sourceRoot":"","sources":["../../../src/modules/documents/figma.logic.ts"],"names":[],"mappings":"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"}