@cat-factory/integrations 0.145.0 → 0.147.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 (52) hide show
  1. package/dist/index.d.ts +4 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/modules/accountSettings/AccountSettingsService.d.ts.map +1 -1
  6. package/dist/modules/accountSettings/AccountSettingsService.js +4 -2
  7. package/dist/modules/accountSettings/AccountSettingsService.js.map +1 -1
  8. package/dist/modules/documents/ConfluenceProvider.d.ts +3 -0
  9. package/dist/modules/documents/ConfluenceProvider.d.ts.map +1 -1
  10. package/dist/modules/documents/DocumentConnectionService.d.ts +45 -1
  11. package/dist/modules/documents/DocumentConnectionService.d.ts.map +1 -1
  12. package/dist/modules/documents/DocumentConnectionService.js +57 -5
  13. package/dist/modules/documents/DocumentConnectionService.js.map +1 -1
  14. package/dist/modules/documents/DocumentLinkService.d.ts +28 -1
  15. package/dist/modules/documents/DocumentLinkService.d.ts.map +1 -1
  16. package/dist/modules/documents/DocumentLinkService.js +78 -10
  17. package/dist/modules/documents/DocumentLinkService.js.map +1 -1
  18. package/dist/modules/documents/DocumentPlannerService.d.ts +11 -2
  19. package/dist/modules/documents/DocumentPlannerService.d.ts.map +1 -1
  20. package/dist/modules/documents/DocumentPlannerService.js +95 -12
  21. package/dist/modules/documents/DocumentPlannerService.js.map +1 -1
  22. package/dist/modules/documents/DocumentSourceOAuthService.d.ts +88 -0
  23. package/dist/modules/documents/DocumentSourceOAuthService.d.ts.map +1 -0
  24. package/dist/modules/documents/DocumentSourceOAuthService.js +197 -0
  25. package/dist/modules/documents/DocumentSourceOAuthService.js.map +1 -0
  26. package/dist/modules/documents/FigmaProvider.d.ts +10 -0
  27. package/dist/modules/documents/FigmaProvider.d.ts.map +1 -1
  28. package/dist/modules/documents/FigmaProvider.js +17 -6
  29. package/dist/modules/documents/FigmaProvider.js.map +1 -1
  30. package/dist/modules/documents/GitHubDocsProvider.d.ts +3 -0
  31. package/dist/modules/documents/GitHubDocsProvider.d.ts.map +1 -1
  32. package/dist/modules/documents/LinearDocumentProvider.d.ts +3 -0
  33. package/dist/modules/documents/LinearDocumentProvider.d.ts.map +1 -1
  34. package/dist/modules/documents/NotionProvider.d.ts +3 -0
  35. package/dist/modules/documents/NotionProvider.d.ts.map +1 -1
  36. package/dist/modules/documents/ZeplinProvider.d.ts +3 -0
  37. package/dist/modules/documents/ZeplinProvider.d.ts.map +1 -1
  38. package/dist/modules/documents/documents.logic.d.ts +44 -3
  39. package/dist/modules/documents/documents.logic.d.ts.map +1 -1
  40. package/dist/modules/documents/documents.logic.js +90 -5
  41. package/dist/modules/documents/documents.logic.js.map +1 -1
  42. package/dist/modules/documents/figma.logic.d.ts +10 -2
  43. package/dist/modules/documents/figma.logic.d.ts.map +1 -1
  44. package/dist/modules/documents/figma.logic.js +30 -2
  45. package/dist/modules/documents/figma.logic.js.map +1 -1
  46. package/dist/modules/publicApi/PublicApiKeyService.d.ts +12 -0
  47. package/dist/modules/publicApi/PublicApiKeyService.d.ts.map +1 -1
  48. package/dist/modules/publicApi/PublicApiKeyService.js +2 -0
  49. package/dist/modules/publicApi/PublicApiKeyService.js.map +1 -1
  50. package/dist/modules/writeback/reviewQuestions.logic.js +1 -1
  51. package/dist/modules/writeback/reviewQuestions.logic.js.map +1 -1
  52. package/package.json +4 -4
@@ -0,0 +1,197 @@
1
+ import { DOCUMENT_OAUTH_CREDENTIAL_KEYS, UnavailableError, ValidationError, describeError, noopLogger, } from '@cat-factory/kernel';
2
+ /**
3
+ * How far before its stated expiry an access token is treated as spent.
4
+ *
5
+ * A resolved credential is used for the length of an import or a whole-file re-fetch, not at the
6
+ * instant it is read, so "expires in twenty seconds" is functionally expired. Refreshing early
7
+ * costs one round trip; handing over a token that dies mid-fetch costs the reader its document
8
+ * and reports it as a source outage.
9
+ */
10
+ const EXPIRY_SKEW_MS = 60_000;
11
+ export class DocumentSourceOAuthService {
12
+ deps;
13
+ log;
14
+ constructor(deps) {
15
+ this.deps = deps;
16
+ this.log = deps.logger ?? noopLogger;
17
+ }
18
+ get http() {
19
+ return this.deps.fetchImpl ?? fetch;
20
+ }
21
+ /**
22
+ * The sources this deployment can connect by OAuth for this workspace: an `oauth` declaration
23
+ * AND a registered client.
24
+ *
25
+ * BOTH halves, because the surface reading it renders a button. A source declaring the half
26
+ * with no client registered would offer a "Connect with Figma" that can only 503, which is the
27
+ * misattribution the separate wire field exists to prevent.
28
+ */
29
+ async availableSources(workspaceId) {
30
+ const declared = this.deps.registry.list().filter((provider) => provider.oauth);
31
+ const resolved = await Promise.all(declared.map(async (provider) => (await this.deps.resolveClient(workspaceId, provider.kind)) ? provider.kind : null));
32
+ return resolved.filter((kind) => kind !== null);
33
+ }
34
+ /**
35
+ * The vendor URL to send the operator's browser to, carrying the caller's signed `state`.
36
+ *
37
+ * Throws rather than answering a status: every failure here is a refusal an operator asked for
38
+ * by pressing a button (a source with no OAuth half, a deployment with no registered app), and
39
+ * a button press deserves a reason rather than a dead link.
40
+ */
41
+ async authorizeUrl(input) {
42
+ const { spec, client } = await this.require(input.workspaceId, input.source);
43
+ const url = new URL(spec.authorizeUrl);
44
+ url.searchParams.set('client_id', client.clientId);
45
+ url.searchParams.set('redirect_uri', client.redirectUrl);
46
+ url.searchParams.set('scope', spec.scopes.join(spec.scopeSeparator ?? ' '));
47
+ url.searchParams.set('state', input.state);
48
+ url.searchParams.set('response_type', 'code');
49
+ return url.toString();
50
+ }
51
+ /**
52
+ * Exchange a callback `code` for the credential bag the workspace's connection will hold.
53
+ *
54
+ * It RETURNS the bag rather than storing it, which is what keeps this service free of the
55
+ * connection store: persistence flows one way (the connection service renews through this one),
56
+ * and having the exchange write back would close that into a cycle broken only by a setter.
57
+ * The caller stores it through `DocumentConnectionService.connectWithOAuth`.
58
+ */
59
+ async exchangeCode(input) {
60
+ const { spec, client } = await this.require(input.workspaceId, input.source);
61
+ const tokens = await this.post(spec.tokenUrl, client, {
62
+ grant_type: 'authorization_code',
63
+ code: input.code,
64
+ redirect_uri: client.redirectUrl,
65
+ });
66
+ return this.bagFrom(tokens);
67
+ }
68
+ /**
69
+ * Renew a stored grant that is at or past its expiry skew, answering the NEW credential bag, or
70
+ * null when there was nothing to do or the renewal could not be made.
71
+ *
72
+ * Null rather than a throw on every failure path, because this sits on the credential-resolution
73
+ * path of every read: a grant that cannot be renewed right now must cost the reader a failed
74
+ * fetch it can report as a source outage, never the read itself. Three states are deliberately
75
+ * distinguished in what it logs, since each needs a different fix: a grant with no refresh
76
+ * token, a source whose spec declares no refresh endpoint (the grant was never renewable, so
77
+ * reconnecting is the only remedy), and a refresh that was attempted and failed.
78
+ *
79
+ * Unguarded against a lost race ON PURPOSE. The endpoints supported here return a new access
80
+ * token against an unchanged refresh token, so two concurrent renewals converge: the loser
81
+ * overwrites an equivalent value rather than replacing a live grant with a dead one, which is
82
+ * the failure a rotating authorization server would make a `compareAndSwap` mandatory for. A
83
+ * source whose refresh ROTATES cannot be added without revisiting this.
84
+ */
85
+ async renewIfExpiring(record) {
86
+ // The ABSENCE of a deadline is tested BEFORE the value is converted, because `Number('')` is
87
+ // 0 rather than `NaN`: reading the two together makes every bag that never recorded an expiry
88
+ // (a typed credential, and an OAuth grant whose token response stated no `expires_in`) look
89
+ // like one that expired at the epoch. That is not a stale reading that corrects itself — it is
90
+ // permanent, and it lands on the resolution path of EVERY read: a PAT connection would warn
91
+ // "grant expired and cannot be renewed" on each one, and a lifetime-less grant would spend a
92
+ // refresh round trip plus a write on each one, forever.
93
+ const deadline = record.credentials[DOCUMENT_OAUTH_CREDENTIAL_KEYS.expiresAt]?.trim();
94
+ if (!deadline)
95
+ return null;
96
+ const expiresAt = Number(deadline);
97
+ if (!Number.isFinite(expiresAt))
98
+ return null;
99
+ if (expiresAt - EXPIRY_SKEW_MS > this.deps.clock.now())
100
+ return null;
101
+ const refreshToken = record.credentials[DOCUMENT_OAUTH_CREDENTIAL_KEYS.refreshToken];
102
+ const spec = this.deps.registry.get(record.source)?.oauth;
103
+ if (!refreshToken || !spec?.refreshUrl) {
104
+ this.log.warn('document source OAuth grant expired and cannot be renewed', {
105
+ workspaceId: record.workspaceId,
106
+ source: record.source,
107
+ // Which of the two is missing decides the remedy, and neither is fixable by waiting.
108
+ cause: refreshToken ? 'source_has_no_refresh_endpoint' : 'grant_has_no_refresh_token',
109
+ });
110
+ return null;
111
+ }
112
+ const client = await this.deps.resolveClient(record.workspaceId, record.source);
113
+ if (!client) {
114
+ this.log.warn('document source OAuth grant cannot be renewed: no registered app', {
115
+ workspaceId: record.workspaceId,
116
+ source: record.source,
117
+ });
118
+ return null;
119
+ }
120
+ try {
121
+ const tokens = await this.post(spec.refreshUrl, client, {
122
+ grant_type: 'refresh_token',
123
+ refresh_token: refreshToken,
124
+ });
125
+ // A refresh response routinely omits the refresh token it did not rotate, so the stored one
126
+ // is carried forward: taking the response literally would strip the workspace's ability to
127
+ // renew again and turn a working grant into a one-shot one.
128
+ return this.bagFrom({ ...tokens, refresh_token: tokens.refresh_token ?? refreshToken });
129
+ }
130
+ catch (error) {
131
+ this.log.warn('document source OAuth refresh failed', {
132
+ workspaceId: record.workspaceId,
133
+ source: record.source,
134
+ ...describeError(error),
135
+ });
136
+ return null;
137
+ }
138
+ }
139
+ /** The platform-owned credential bag for a token response. */
140
+ bagFrom(tokens) {
141
+ const accessToken = tokens.access_token?.trim();
142
+ if (!accessToken) {
143
+ throw new UnavailableError('The authorization server returned no access token', 'oauth_token_missing');
144
+ }
145
+ const lifetime = Number(tokens.expires_in);
146
+ return {
147
+ [DOCUMENT_OAUTH_CREDENTIAL_KEYS.accessToken]: accessToken,
148
+ ...(tokens.refresh_token?.trim()
149
+ ? { [DOCUMENT_OAUTH_CREDENTIAL_KEYS.refreshToken]: tokens.refresh_token.trim() }
150
+ : {}),
151
+ // An absent lifetime means the grant does not expire on a clock we can see; recording a
152
+ // guessed deadline would make `refreshIfExpiring` renew a token nobody said was dying.
153
+ ...(Number.isFinite(lifetime) && lifetime > 0
154
+ ? {
155
+ [DOCUMENT_OAUTH_CREDENTIAL_KEYS.expiresAt]: String(this.deps.clock.now() + lifetime * 1000),
156
+ }
157
+ : {}),
158
+ };
159
+ }
160
+ /** One token-endpoint call, authenticated as the confidential client. */
161
+ async post(url, client, params) {
162
+ const res = await this.http(url, {
163
+ method: 'POST',
164
+ headers: {
165
+ accept: 'application/json',
166
+ 'content-type': 'application/x-www-form-urlencoded',
167
+ // HTTP Basic is the RFC 6749 default for a confidential client, and is what both Figma
168
+ // token endpoints accept; the body carries no secret so a proxy log cannot spill it.
169
+ authorization: `Basic ${btoa(`${client.clientId}:${client.clientSecret}`)}`,
170
+ },
171
+ body: new URLSearchParams(params),
172
+ });
173
+ const body = (await res.json().catch(() => ({})));
174
+ if (!res.ok) {
175
+ throw new UnavailableError(`The authorization server refused the request (HTTP ${res.status}): ` +
176
+ `${body.error_description || body.error || body.message || 'no reason given'}`, 'oauth_exchange_failed');
177
+ }
178
+ return body;
179
+ }
180
+ /** Resolve the source's OAuth declaration + this deployment's registered app, or refuse. */
181
+ async require(workspaceId, source) {
182
+ const provider = this.deps.registry.get(source);
183
+ if (!provider) {
184
+ throw new ValidationError(`Unknown or unconfigured document source '${source}'`);
185
+ }
186
+ if (!provider.oauth) {
187
+ throw new ValidationError(`${provider.descriptor.label} does not support connecting by OAuth; use its credential form instead.`, { reason: 'oauth_not_supported' });
188
+ }
189
+ const client = await this.deps.resolveClient(workspaceId, source);
190
+ if (!client) {
191
+ throw new UnavailableError(`This deployment has no registered ${provider.descriptor.label} app, so it cannot run ` +
192
+ `the OAuth connect. An admin registers one in the account's deployment settings.`, 'oauth_client_not_registered');
193
+ }
194
+ return { spec: provider.oauth, client };
195
+ }
196
+ }
197
+ //# sourceMappingURL=DocumentSourceOAuthService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentSourceOAuthService.js","sourceRoot":"","sources":["../../../src/modules/documents/DocumentSourceOAuthService.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,11 @@ export declare class FigmaProvider implements DocumentSourceProvider {
20
20
  refLabel: string;
21
21
  refPlaceholder: string;
22
22
  searchable?: boolean | undefined;
23
+ oauth?: {
24
+ scopes: string[];
25
+ } | undefined;
23
26
  };
27
+ readonly oauth: import("@cat-factory/kernel").DocumentSourceOAuthSpec;
24
28
  normalizeConnection(input: DocumentCredentials): NormalizedConnection;
25
29
  parseRef(input: string): string | null;
26
30
  canonicalUrl(externalId: string): string;
@@ -71,6 +75,12 @@ export declare class FigmaProvider implements DocumentSourceProvider {
71
75
  private fetchVariables;
72
76
  /** Best-effort short-lived PNG render URL for the node (or whole file); null on any failure. */
73
77
  private fetchPreviewUrl;
78
+ /**
79
+ * Figma names its two credentials in two different headers, so which one the bag carries
80
+ * decides the header rather than adding a second client. An OAuth grant wins when both are
81
+ * present: it is the credential the platform can RENEW, and a stale PAT left behind by an
82
+ * earlier connect must not quietly outrank the grant a person has just made.
83
+ */
74
84
  private headers;
75
85
  private parse;
76
86
  private get;
@@ -1 +1 @@
1
- {"version":3,"file":"FigmaProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/FigmaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAyC5B,yEAAyE;AACzE,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,MAAM,EAAE,MAAM;IADzB,YACW,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EAIhB;CACF;AA2GD,qBAAa,aAAc,YAAW,sBAAsB;IAC1D,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;IAChC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;MAAmB;IAEtC,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAMpE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAED,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvC;IAED;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7D;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,eAAe,CAAC,CAuC1B;IAED;;;;OAIG;IACG,YAAY,CAChB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,MAAM,CAAC,CAUjB;IAED,gGAAgG;YAClF,UAAU;IASxB;;;;;OAKG;YACW,gBAAgB;IAyB9B;;;;;;;;OAQG;YACW,eAAe;IAgE7B;;;;OAIG;YACW,kBAAkB;IAuChC;;;;;OAKG;YACW,cAAc;IAoB5B,gGAAgG;YAClF,eAAe;IAqB7B,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,KAAK;YAQC,GAAG;CAqBlB"}
1
+ {"version":3,"file":"FigmaProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/FigmaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AA0C5B,yEAAyE;AACzE,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,MAAM,EAAE,MAAM;IADzB,YACW,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EAIhB;CACF;AA2GD,qBAAa,aAAc,YAAW,sBAAsB;IAC1D,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;IAChC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;;;MAAmB;IACtC,QAAQ,CAAC,KAAK,wDAAc;IAE5B,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAMpE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAED,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvC;IAED;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7D;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,eAAe,CAAC,CAuC1B;IAED;;;;OAIG;IACG,YAAY,CAChB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,MAAM,CAAC,CAUjB;IAED,gGAAgG;YAClF,UAAU;IASxB;;;;;OAKG;YACW,gBAAgB;IAyB9B;;;;;;;;OAQG;YACW,eAAe;IAgE7B;;;;OAIG;YACW,kBAAkB;IAuChC;;;;;OAKG;YACW,cAAc;IAoB5B,gGAAgG;YAClF,eAAe;IAqB7B;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,KAAK;YAQC,GAAG;CAqBlB"}
@@ -1,11 +1,12 @@
1
- import { describeError, ValidationError, } from '@cat-factory/kernel';
1
+ import { describeError, documentOAuthAccessToken, ValidationError, } from '@cat-factory/kernel';
2
2
  import { renderDesignContext } from './design.logic.js';
3
- import { FIGMA_API_HOST, FIGMA_DESCRIPTOR } from './figma.logic.js';
3
+ import { FIGMA_API_HOST, FIGMA_DESCRIPTOR, FIGMA_OAUTH } from './figma.logic.js';
4
4
  import * as figmaLogic from './figma.logic.js';
5
5
  import { DocumentHttpError, createHostPinnedFetch, readCappedText } from './http.js';
6
- // FigmaProvider: the document-source provider for Figma. It authenticates with a
7
- // per-workspace personal access token (the `X-Figma-Token` header), fetches a
8
- // file or a specific frame/node via the REST API, and renders the layout tree,
6
+ // FigmaProvider: the document-source provider for Figma. It authenticates with
7
+ // whichever credential the workspace connected — a personal access token (the
8
+ // `X-Figma-Token` header) or an OAuth grant the platform holds (a `Bearer` token)
9
+ // fetches a file or a specific frame/node via the REST API, and renders the layout tree,
9
10
  // text, components-used and (Enterprise-gated) design tokens to the Markdown the
10
11
  // planner + `.cat-context/` materialisation consume. All Figma-specific *pure*
11
12
  // logic (ref parsing, the fixed-host SSRF guard, JSON → Markdown) lives in
@@ -92,6 +93,7 @@ function describeFetchCause(error) {
92
93
  export class FigmaProvider {
93
94
  kind = 'figma';
94
95
  descriptor = FIGMA_DESCRIPTOR;
96
+ oauth = FIGMA_OAUTH;
95
97
  normalizeConnection(input) {
96
98
  const apiToken = input.apiToken?.trim();
97
99
  if (!apiToken) {
@@ -324,9 +326,18 @@ export class FigmaProvider {
324
326
  return null;
325
327
  }
326
328
  }
329
+ /**
330
+ * Figma names its two credentials in two different headers, so which one the bag carries
331
+ * decides the header rather than adding a second client. An OAuth grant wins when both are
332
+ * present: it is the credential the platform can RENEW, and a stale PAT left behind by an
333
+ * earlier connect must not quietly outrank the grant a person has just made.
334
+ */
327
335
  headers(credentials) {
336
+ const accessToken = documentOAuthAccessToken(credentials);
328
337
  return {
329
- 'x-figma-token': credentials.apiToken ?? '',
338
+ ...(accessToken
339
+ ? { authorization: `Bearer ${accessToken}` }
340
+ : { 'x-figma-token': credentials.apiToken ?? '' }),
330
341
  accept: 'application/json',
331
342
  'user-agent': USER_AGENT,
332
343
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FigmaProvider.js","sourceRoot":"","sources":["../../../src/modules/documents/FigmaProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FigmaProvider.js","sourceRoot":"","sources":["../../../src/modules/documents/FigmaProvider.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,9 @@ export declare class GitHubDocsProvider implements DocumentSourceProvider {
28
28
  refLabel: string;
29
29
  refPlaceholder: string;
30
30
  searchable?: boolean | undefined;
31
+ oauth?: {
32
+ scopes: string[];
33
+ } | undefined;
31
34
  };
32
35
  constructor(deps: GitHubDocsProviderDependencies);
33
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubDocsProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/GitHubDocsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,MAAM,EACX,KAAK,oBAAoB,EAE1B,MAAM,qBAAqB,CAAA;AAe5B,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,YAAY,CAAA;IAC1B,8EAA8E;IAC9E,aAAa,EAAE,4BAA4B,CAAA;IAC3C;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;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;;;;;;OAMG;IACG,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAGzF;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IASK,aAAa,CACjB,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,eAAe,CAAC,CA4C1B;IAED;;;;OAIG;IACG,YAAY,CAChB,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,MAAM,CAAC,CAajB;IAEK,MAAM,CACV,YAAY,EAAE,mBAAmB,EACjC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAkCjC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;;;;;;;;;;;OAYG;YACW,qBAAqB;IAUnC;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CAsCrB"}
1
+ {"version":3,"file":"GitHubDocsProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/GitHubDocsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,MAAM,EACX,KAAK,oBAAoB,EAE1B,MAAM,qBAAqB,CAAA;AAe5B,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,YAAY,CAAA;IAC1B,8EAA8E;IAC9E,aAAa,EAAE,4BAA4B,CAAA;IAC3C;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;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;;;;;;OAMG;IACG,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAGzF;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IASK,aAAa,CACjB,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,eAAe,CAAC,CA4C1B;IAED;;;;OAIG;IACG,YAAY,CAChB,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,MAAM,CAAC,CAajB;IAEK,MAAM,CACV,YAAY,EAAE,mBAAmB,EACjC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAkCjC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;;;;;;;;;;;OAYG;YACW,qBAAqB;IAUnC;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CAsCrB"}
@@ -15,6 +15,9 @@ export declare class LinearDocumentProvider implements DocumentSourceProvider {
15
15
  refLabel: string;
16
16
  refPlaceholder: string;
17
17
  searchable?: boolean | undefined;
18
+ oauth?: {
19
+ scopes: string[];
20
+ } | undefined;
18
21
  };
19
22
  normalizeConnection(input: DocumentCredentials): NormalizedConnection;
20
23
  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;AAwB5B,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,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,eAAe,CAAC,CAM1B;IAED;;;OAGG;IACG,YAAY,CAChB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,MAAM,CAAC,CAOjB;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;AAwB5B,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,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,eAAe,CAAC,CAM1B;IAED;;;OAGG;IACG,YAAY,CAChB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,MAAM,CAAC,CAOjB;IAEK,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAO7F;CACF"}
@@ -20,6 +20,9 @@ export declare class NotionProvider implements DocumentSourceProvider {
20
20
  refLabel: string;
21
21
  refPlaceholder: string;
22
22
  searchable?: boolean | undefined;
23
+ oauth?: {
24
+ scopes: string[];
25
+ } | undefined;
23
26
  };
24
27
  normalizeConnection(input: DocumentCredentials): NormalizedConnection;
25
28
  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;AAoGD,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;IAED;;;;OAIG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvC;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,eAAe,CAAC,CAgB1B;IAED;;;;OAIG;IACG,YAAY,CAChB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,MAAM,CAAC,CASjB;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;AAoGD,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;IAED;;;;OAIG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvC;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,eAAe,CAAC,CAgB1B;IAED;;;;OAIG;IACG,YAAY,CAChB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,MAAM,CAAC,CASjB;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"}
@@ -20,6 +20,9 @@ export declare class ZeplinProvider implements DocumentSourceProvider {
20
20
  refLabel: string;
21
21
  refPlaceholder: string;
22
22
  searchable?: boolean | undefined;
23
+ oauth?: {
24
+ scopes: string[];
25
+ } | undefined;
23
26
  };
24
27
  normalizeConnection(input: DocumentCredentials): NormalizedConnection;
25
28
  parseRef(input: string): string | null;
@@ -1 +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;AAoC5B,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;IAED,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvC;IAED;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7D;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,eAAe,CAAC,CAsD1B;IAED;;;;OAIG;IACG,YAAY,CAChB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,MAAM,CAAC,CAUjB;IAED,sFAAsF;YACxE,YAAY;IAsB1B;;;;OAIG;YACW,UAAU;IAUxB,OAAO,CAAC,OAAO;YAQD,GAAG;CAuBlB"}
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;AAoC5B,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;IAED,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvC;IAED;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7D;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,eAAe,CAAC,CAsD1B;IAED;;;;OAIG;IACG,YAAY,CAChB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,MAAM,CAAC,CAUjB;IAED,sFAAsF;YACxE,YAAY;IAsB1B;;;;OAIG;YACW,UAAU;IAUxB,OAAO,CAAC,OAAO;YAQD,GAAG;CAuBlB"}
@@ -1,4 +1,4 @@
1
- import type { DocumentOrigin, DocumentSourceKind } from '@cat-factory/kernel';
1
+ import type { BlockType, DocumentOrigin, DocumentSourceKind } from '@cat-factory/kernel';
2
2
  import type { DocumentBoardPlan } from '@cat-factory/kernel';
3
3
  import type { DocumentSourceProvider, DocumentSourceRegistry } from '@cat-factory/kernel';
4
4
  import { buildExcerpt, markdownToText, MapSourceRegistry } from '@cat-factory/kernel';
@@ -34,20 +34,61 @@ export interface AgentVisibleProjection {
34
34
  * in the file). Both callers add their own `sourceVersion` rule around this.
35
35
  */
36
36
  export declare function sameAgentVisibleProjection(a: AgentVisibleProjection, b: AgentVisibleProjection): boolean;
37
- /** A trivial in-memory provider registry built from the wired providers. */
37
+ /**
38
+ * A trivial in-memory provider registry built from the wired providers.
39
+ *
40
+ * The one construction path for every deployment's document sources, which is why the OAuth
41
+ * half-declaration check sits here rather than in each facade's wiring: a provider that reaches a
42
+ * registry has been through it.
43
+ */
38
44
  export declare class MapDocumentSourceRegistry extends MapSourceRegistry<DocumentSourceKind, DocumentSourceProvider> implements DocumentSourceRegistry {
45
+ constructor(providers: DocumentSourceProvider[]);
46
+ }
47
+ /**
48
+ * The existing service frame a TARGET-AWARE plan is authored for.
49
+ *
50
+ * `existingModules` is what keeps a targeted plan additive: the planner is told what the frame
51
+ * already holds so it proposes work beside it rather than a second "Checkout" module beside the
52
+ * one that is already there. It is a fact about the board, so the caller reads it; a planner that
53
+ * fetched it would need the block repository for a prompt detail.
54
+ */
55
+ export interface PlanTarget {
56
+ frameId: string;
57
+ title: string;
58
+ type: BlockType;
59
+ existingModules: readonly string[];
39
60
  }
40
61
  /**
41
62
  * Deterministic fallback planner: map the document's heading outline onto the
42
63
  * board. h1 → a service frame, h2 → a module within it, h3 → a task within the
43
64
  * current module (or directly in the frame). Used whenever no LLM is configured,
44
65
  * and as the safety net when an LLM response can't be parsed.
66
+ *
67
+ * With a {@link PlanTarget} it maps onto that ONE frame instead, and the whole outline SHIFTS UP a
68
+ * level: the target occupies the level h1 would have created, so h1 is consumed by it, h2 becomes
69
+ * a module and h3 a task. Keeping h1 as a module would put a module named after the document
70
+ * around everything, one level below the service that is already named after it.
71
+ *
72
+ * A document with SEVERAL h1s therefore loses that top grouping, which is inherent to spawning
73
+ * into one frame rather than a defect of the mapping: a document describing two services is what
74
+ * the board-wide plan is for.
45
75
  */
46
- export declare function planFromHeadings(source: DocumentOrigin, externalId: string, title: string, body: string): DocumentBoardPlan;
76
+ export declare function planFromHeadings(source: DocumentOrigin, externalId: string, title: string, body: string, target?: PlanTarget): DocumentBoardPlan;
47
77
  /**
48
78
  * Coerce an LLM's parsed JSON into a well-formed {@link DocumentBoardPlan},
49
79
  * dropping anything malformed. Returns null when nothing usable remains, so the
50
80
  * caller can fall back to the heading parser.
51
81
  */
52
82
  export declare function coercePlan(source: DocumentOrigin, externalId: string, parsed: unknown): DocumentBoardPlan | null;
83
+ /**
84
+ * Coerce a TARGET-AWARE model response — `{ modules, tasks }` for one existing service — into a
85
+ * plan carrying exactly that frame. Null when nothing usable remains, so the caller falls back to
86
+ * the targeted heading parser rather than to a board-wide plan the user did not ask for.
87
+ *
88
+ * It reads a DIFFERENT top-level shape from {@link coercePlan} because it asked a different
89
+ * question: a targeted prompt that answered with `frames` would be a model proposing an
90
+ * architecture where a service already exists, and quietly re-reading those frames as modules
91
+ * would launder that mistake into the board.
92
+ */
93
+ export declare function coerceTargetedPlan(source: DocumentOrigin, externalId: string, parsed: unknown, target: PlanTarget): DocumentBoardPlan | null;
53
94
  //# sourceMappingURL=documents.logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"documents.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/documents.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAmC,MAAM,qBAAqB,CAAA;AAC7F,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAKrF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAA;AAmBvC;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,uGAAuG;AACvG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,CAAC,EAAE,sBAAsB,EACzB,CAAC,EAAE,sBAAsB,GACxB,OAAO,CAET;AAED,4EAA4E;AAC5E,qBAAa,yBACX,SAAQ,iBAAiB,CAAC,kBAAkB,EAAE,sBAAsB,CACpE,YAAW,sBAAsB;CAAG;AAmBtC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,iBAAiB,CAiCnB;AAiBD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,GACd,iBAAiB,GAAG,IAAI,CAiC1B"}
1
+ {"version":3,"file":"documents.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/documents.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAmC,MAAM,qBAAqB,CAAA;AAC7F,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACzF,OAAO,EAEL,YAAY,EACZ,cAAc,EACd,iBAAiB,EAClB,MAAM,qBAAqB,CAAA;AAK5B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAA;AAmBvC;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,uGAAuG;AACvG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,CAAC,EAAE,sBAAsB,EACzB,CAAC,EAAE,sBAAsB,GACxB,OAAO,CAET;AAED;;;;;;GAMG;AACH,qBAAa,yBACX,SAAQ,iBAAiB,CAAC,kBAAkB,EAAE,sBAAsB,CACpE,YAAW,sBAAsB;IAEjC,YAAY,SAAS,EAAE,sBAAsB,EAAE,EAG9C;CACF;AAmBD;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;IACf,eAAe,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,UAAU,GAClB,iBAAiB,CAkCnB;AA4CD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,GACd,iBAAiB,GAAG,IAAI,CAiC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,UAAU,GACjB,iBAAiB,GAAG,IAAI,CA2B1B"}
@@ -1,4 +1,4 @@
1
- import { buildExcerpt, markdownToText, MapSourceRegistry } from '@cat-factory/kernel';
1
+ import { assertDocumentSourceOAuthAgrees, buildExcerpt, markdownToText, MapSourceRegistry, } from '@cat-factory/kernel';
2
2
  // `markdownToText`/`buildExcerpt` now live in the shared markdown helpers (also
3
3
  // used by the task-source integration); re-exported here so existing
4
4
  // `documentsLogic.*` consumers are unchanged.
@@ -47,8 +47,19 @@ export function probeCacheKey(source, externalId) {
47
47
  export function sameAgentVisibleProjection(a, b) {
48
48
  return a.contentHash === b.contentHash && a.title === b.title && a.url === b.url;
49
49
  }
50
- /** A trivial in-memory provider registry built from the wired providers. */
50
+ /**
51
+ * A trivial in-memory provider registry built from the wired providers.
52
+ *
53
+ * The one construction path for every deployment's document sources, which is why the OAuth
54
+ * half-declaration check sits here rather than in each facade's wiring: a provider that reaches a
55
+ * registry has been through it.
56
+ */
51
57
  export class MapDocumentSourceRegistry extends MapSourceRegistry {
58
+ constructor(providers) {
59
+ super(providers);
60
+ for (const provider of providers)
61
+ assertDocumentSourceOAuthAgrees(provider);
62
+ }
52
63
  }
53
64
  /** Extract `#`/`##`/`###` headings (clamped to 1–3), in document order. */
54
65
  function extractHeadings(markdown) {
@@ -67,8 +78,19 @@ function extractHeadings(markdown) {
67
78
  * board. h1 → a service frame, h2 → a module within it, h3 → a task within the
68
79
  * current module (or directly in the frame). Used whenever no LLM is configured,
69
80
  * and as the safety net when an LLM response can't be parsed.
81
+ *
82
+ * With a {@link PlanTarget} it maps onto that ONE frame instead, and the whole outline SHIFTS UP a
83
+ * level: the target occupies the level h1 would have created, so h1 is consumed by it, h2 becomes
84
+ * a module and h3 a task. Keeping h1 as a module would put a module named after the document
85
+ * around everything, one level below the service that is already named after it.
86
+ *
87
+ * A document with SEVERAL h1s therefore loses that top grouping, which is inherent to spawning
88
+ * into one frame rather than a defect of the mapping: a document describing two services is what
89
+ * the board-wide plan is for.
70
90
  */
71
- export function planFromHeadings(source, externalId, title, body) {
91
+ export function planFromHeadings(source, externalId, title, body, target) {
92
+ if (target)
93
+ return targetedPlanFromHeadings(source, externalId, body, target);
72
94
  const headings = extractHeadings(body);
73
95
  const frames = [];
74
96
  let frame = null;
@@ -101,7 +123,31 @@ export function planFromHeadings(source, externalId, title, body) {
101
123
  if (frames.length === 0) {
102
124
  frames.push({ type: 'service', title, modules: [], tasks: [] });
103
125
  }
104
- return { source, externalId, planner: 'headings', frames };
126
+ return { source, externalId, planner: 'headings', targetFrameId: null, frames };
127
+ }
128
+ /** {@link planFromHeadings} onto one existing frame: h1 is the target, h2 → modules, h3 → tasks. */
129
+ function targetedPlanFromHeadings(source, externalId, body, target) {
130
+ const frame = { type: target.type, title: target.title, modules: [], tasks: [] };
131
+ let module = null;
132
+ for (const heading of extractHeadings(body)) {
133
+ if (heading.level === 1) {
134
+ // Consumed by the target, and it also CLOSES the open module: the h2s that follow belong
135
+ // to a new section of the document, so folding them into the previous h1's last module
136
+ // would group work the outline kept apart.
137
+ module = null;
138
+ }
139
+ else if (heading.level === 2) {
140
+ module = { name: heading.text, tasks: [] };
141
+ frame.modules.push(module);
142
+ }
143
+ else if (module) {
144
+ module.tasks.push({ title: heading.text });
145
+ }
146
+ else {
147
+ frame.tasks.push({ title: heading.text });
148
+ }
149
+ }
150
+ return { source, externalId, planner: 'headings', targetFrameId: target.frameId, frames: [frame] };
105
151
  }
106
152
  function asString(value) {
107
153
  return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
@@ -162,6 +208,45 @@ export function coercePlan(source, externalId, parsed) {
162
208
  }
163
209
  if (frames.length === 0)
164
210
  return null;
165
- return { source, externalId, planner: 'llm', frames };
211
+ return { source, externalId, planner: 'llm', targetFrameId: null, frames };
212
+ }
213
+ /**
214
+ * Coerce a TARGET-AWARE model response — `{ modules, tasks }` for one existing service — into a
215
+ * plan carrying exactly that frame. Null when nothing usable remains, so the caller falls back to
216
+ * the targeted heading parser rather than to a board-wide plan the user did not ask for.
217
+ *
218
+ * It reads a DIFFERENT top-level shape from {@link coercePlan} because it asked a different
219
+ * question: a targeted prompt that answered with `frames` would be a model proposing an
220
+ * architecture where a service already exists, and quietly re-reading those frames as modules
221
+ * would launder that mistake into the board.
222
+ */
223
+ export function coerceTargetedPlan(source, externalId, parsed, target) {
224
+ const root = (parsed ?? null);
225
+ const modules = [];
226
+ for (const raw of Array.isArray(root?.modules) ? root.modules : []) {
227
+ if (typeof raw !== 'object' || raw === null)
228
+ continue;
229
+ const name = asString(raw.name);
230
+ if (!name)
231
+ continue;
232
+ const tasks = (Array.isArray(raw.tasks)
233
+ ? raw.tasks
234
+ : [])
235
+ .map(coerceTask)
236
+ .filter((t) => t !== null);
237
+ modules.push({ name, tasks });
238
+ }
239
+ const tasks = (Array.isArray(root?.tasks) ? root.tasks : [])
240
+ .map(coerceTask)
241
+ .filter((t) => t !== null);
242
+ if (modules.length === 0 && tasks.length === 0)
243
+ return null;
244
+ return {
245
+ source,
246
+ externalId,
247
+ planner: 'llm',
248
+ targetFrameId: target.frameId,
249
+ frames: [{ type: target.type, title: target.title, modules, tasks }],
250
+ };
166
251
  }
167
252
  //# sourceMappingURL=documents.logic.js.map