@wildo-ai/saas-technical-doc 1.1.2 → 1.1.3

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 (96) hide show
  1. package/dist/esm/companion/application-documentation/application-connection-documentation.d.ts +25 -1
  2. package/dist/esm/companion/application-documentation/application-connection-documentation.d.ts.map +1 -1
  3. package/dist/esm/companion/application-documentation/application-connection-documentation.js +28 -1
  4. package/dist/esm/companion/application-documentation/application-connection-documentation.js.map +1 -1
  5. package/dist/esm/companion/application-documentation/application-domain-documentation.d.ts +133 -0
  6. package/dist/esm/companion/application-documentation/application-domain-documentation.d.ts.map +1 -0
  7. package/dist/esm/companion/application-documentation/application-domain-documentation.js +243 -0
  8. package/dist/esm/companion/application-documentation/application-domain-documentation.js.map +1 -0
  9. package/dist/esm/companion/application-documentation/application-integration-documentation.d.ts.map +1 -1
  10. package/dist/esm/companion/application-documentation/application-integration-documentation.js +23 -0
  11. package/dist/esm/companion/application-documentation/application-integration-documentation.js.map +1 -1
  12. package/dist/esm/companion/application-documentation/application-organization-role-documentation.d.ts +30 -0
  13. package/dist/esm/companion/application-documentation/application-organization-role-documentation.d.ts.map +1 -1
  14. package/dist/esm/companion/application-documentation/application-organization-role-documentation.js +38 -0
  15. package/dist/esm/companion/application-documentation/application-organization-role-documentation.js.map +1 -1
  16. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.d.ts +61 -1
  17. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.d.ts.map +1 -1
  18. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.js +255 -218
  19. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.js.map +1 -1
  20. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.d.ts +2 -0
  21. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.d.ts.map +1 -1
  22. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.js +1 -0
  23. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.js.map +1 -1
  24. package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.js +1 -1
  25. package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.js.map +1 -1
  26. package/dist/esm/companion/index.d.ts +2 -1
  27. package/dist/esm/companion/index.d.ts.map +1 -1
  28. package/dist/esm/companion/index.js +2 -1
  29. package/dist/esm/companion/index.js.map +1 -1
  30. package/dist/esm/companion/manual-controller-route-projection.d.ts +112 -0
  31. package/dist/esm/companion/manual-controller-route-projection.d.ts.map +1 -0
  32. package/dist/esm/companion/manual-controller-route-projection.js +249 -0
  33. package/dist/esm/companion/manual-controller-route-projection.js.map +1 -0
  34. package/dist/esm/companion/openapi-generator.d.ts +16 -0
  35. package/dist/esm/companion/openapi-generator.d.ts.map +1 -1
  36. package/dist/esm/companion/openapi-generator.js +489 -26
  37. package/dist/esm/companion/openapi-generator.js.map +1 -1
  38. package/dist/esm/companion/operation-projection.schemas.d.ts +44 -0
  39. package/dist/esm/companion/operation-projection.schemas.d.ts.map +1 -1
  40. package/dist/esm/companion/operation-projection.schemas.js +37 -0
  41. package/dist/esm/companion/operation-projection.schemas.js.map +1 -1
  42. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.d.ts +7 -1
  43. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.d.ts.map +1 -1
  44. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.js +34 -18
  45. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.js.map +1 -1
  46. package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.d.ts.map +1 -1
  47. package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.js +8 -1
  48. package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.js.map +1 -1
  49. package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.d.ts +0 -9
  50. package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.d.ts.map +0 -1
  51. package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.js +0 -111
  52. package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.js.map +0 -1
  53. package/dist/esm/companion/rendering/technical-documentation-render-model.d.ts.map +1 -1
  54. package/dist/esm/companion/rendering/technical-documentation-render-model.js +30 -13
  55. package/dist/esm/companion/rendering/technical-documentation-render-model.js.map +1 -1
  56. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.d.ts +10 -0
  57. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.d.ts.map +1 -1
  58. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.js +10 -15
  59. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.js.map +1 -1
  60. package/dist/esm/companion/technical-documentation-capture-execution-port.d.ts +27 -1
  61. package/dist/esm/companion/technical-documentation-capture-execution-port.d.ts.map +1 -1
  62. package/dist/esm/companion/technical-documentation-capture-execution-port.js.map +1 -1
  63. package/dist/esm/companion/technical-documentation-diagram-definitions.d.ts +33 -0
  64. package/dist/esm/companion/technical-documentation-diagram-definitions.d.ts.map +1 -0
  65. package/dist/esm/companion/technical-documentation-diagram-definitions.js +54 -0
  66. package/dist/esm/companion/technical-documentation-diagram-definitions.js.map +1 -0
  67. package/dist/esm/companion/technical-documentation-diagram-materializer.d.ts +10 -18
  68. package/dist/esm/companion/technical-documentation-diagram-materializer.d.ts.map +1 -1
  69. package/dist/esm/companion/technical-documentation-diagram-materializer.js +9 -39
  70. package/dist/esm/companion/technical-documentation-diagram-materializer.js.map +1 -1
  71. package/dist/esm/config/wildo-tech-doc-config.schemas.d.ts +8 -4
  72. package/dist/esm/config/wildo-tech-doc-config.schemas.d.ts.map +1 -1
  73. package/dist/esm/config/wildo-tech-doc-config.schemas.js +8 -4
  74. package/dist/esm/config/wildo-tech-doc-config.schemas.js.map +1 -1
  75. package/dist/esm/content/application-consumer-documentation-content.techdoc.d.ts +42 -64
  76. package/dist/esm/content/application-consumer-documentation-content.techdoc.d.ts.map +1 -1
  77. package/dist/esm/content/application-consumer-documentation-content.techdoc.js +164 -925
  78. package/dist/esm/content/application-consumer-documentation-content.techdoc.js.map +1 -1
  79. package/dist/esm/runtime/DocsAuthContext.d.ts +16 -1
  80. package/dist/esm/runtime/DocsAuthContext.d.ts.map +1 -1
  81. package/dist/esm/runtime/DocsAuthContext.js +18 -2
  82. package/dist/esm/runtime/DocsAuthContext.js.map +1 -1
  83. package/dist/esm/runtime/frontend-provider-registry.techdoc.d.ts +35 -13
  84. package/dist/esm/runtime/frontend-provider-registry.techdoc.d.ts.map +1 -1
  85. package/dist/esm/runtime/frontend-provider-registry.techdoc.js +28 -19
  86. package/dist/esm/runtime/frontend-provider-registry.techdoc.js.map +1 -1
  87. package/dist/esm/runtime/index.d.ts +1 -0
  88. package/dist/esm/runtime/index.d.ts.map +1 -1
  89. package/dist/esm/runtime/index.js +1 -0
  90. package/dist/esm/runtime/index.js.map +1 -1
  91. package/dist/esm/runtime/use-docs-provider-sdks.d.ts +21 -0
  92. package/dist/esm/runtime/use-docs-provider-sdks.d.ts.map +1 -0
  93. package/dist/esm/runtime/use-docs-provider-sdks.js +49 -0
  94. package/dist/esm/runtime/use-docs-provider-sdks.js.map +1 -0
  95. package/dist/tsconfig.build.tsbuildinfo +1 -1
  96. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"file":"wildo-tech-doc-config.schemas.js","sourceRoot":"","sources":["../../../../src/config/wildo-tech-doc-config.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,+CAA+C,EAAE,MAAM,uDAAuD,CAAC;AACxH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kCAAkC,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEpH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAc,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,kCAAkC,CAAC,MAAM,CAAC;IACpG,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACjD,CAAC,CAAC;AAGH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,YAAY,CAAC;IAC1D;;;;;OAKG;IACH,mBAAmB,EAAE,+CAA+C;IAEpE;;;;;;;;OAQG;IACH,aAAa,EAAE,CAAC;SACb,YAAY,CAAC;QACZ,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACxD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACzD,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAChE,CAAC;SACD,QAAQ,EAAE;IAEb;;;;;;;;;;OAUG;IACH,wBAAwB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAE/D;;;;OAIG;IACH,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAE3D;;;;;;;;;;;;;;;;;;OAkBG;IACH,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;KACjC,CAAC,CAAC,QAAQ,EAAE;IAEb;;;;;;;;OAQG;IACH,8BAA8B,EAAE,CAAC,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAEvG;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;IAEnD;;;;;;;;;;;;;;;OAeG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAEnD;;;;;;;;;;;;;;;;;;OAkBG;IACH,GAAG,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,8DAA8D","sourcesContent":["/**\n * @wildo_source:part:start engine.saas-technical-doc.config facet:layer:engine facet:family:technical-doc\n *\n * Per-service technical-documentation configuration authored as\n * `wildo.tech-doc.config.ts`. The strict schema owns only settings with live\n * consumers: publication budgets and public sentinels, API-reference inputs,\n * presentation metadata, and the docs service CSP. Framework narrative content\n * comes from the engine topic catalogue, not from application-local recipes.\n */\n\nimport { WildoCspConfigSchema } from '@wildo-ai/platform-config-lib';\nimport { CoreResourceType } from '@wildo-ai/saas-models';\nimport { TechnicalDocumentationSupportedApiVersionSchema } from '@wildo-ai/saas-specifications/technical-documentation';\nimport { z } from 'zod';\nimport { ApiReferenceResourceCategorySchema, OpenApiServerSchema } from '../companion/operation-projection.schemas';\n\n/**\n * Sentinel for `apiDocResources` meaning \"document every core resource that has\n * API-bearing operations\" — the full framework resource catalog. Distinct from\n * an explicit curated array so an app can opt into everything without listing\n * (and re-listing, as the engine grows) every `CoreResourceType` by hand.\n */\nexport const API_DOC_RESOURCES_ALL = 'all' as const;\n\n/**\n * One complete category declaration for the resources published by this API\n * reference. `resourceNames` uses the generated OpenAPI tag name, which is\n * the resolved resource identifier, rather than a display label or a\n * filesystem location. The companion rejects a duplicate, stale or missing\n * assignment whenever this feature is configured.\n */\nexport const ApiReferenceResourceCategoryAssignmentSchema = ApiReferenceResourceCategorySchema.extend({\n resourceNames: z.array(z.string().min(1)).min(1),\n});\nexport type ApiReferenceResourceCategoryAssignment = z.infer<typeof ApiReferenceResourceCategoryAssignmentSchema>;\n\n/**\n * Per-service technical-documentation configuration block.\n *\n * Authored as `export default defineTechnicalDocConfig({...})` in\n * `<tech-doc-service-root>/wildo.tech-doc.config.ts`. The companion\n * loads this file once at bootstrap via jiti and projects fields\n * into the OpenAPI generator and Docusaurus/CSP build surfaces.\n *\n * @example\n * ```ts\n * import { defineTechnicalDocConfig } from '@wildo-ai/saas-technical-doc';\n *\n * export default defineTechnicalDocConfig({\n * supportedApiVersion: '1.0.0',\n * publicMarketingTitle: 'Northstar Tasks — Technical Documentation',\n * apiDocResources: 'all', // also document every core engine resource\n * });\n * ```\n */\nexport const WildoTechnicalDocConfigSchema = z.strictObject({\n /**\n * Exact public API contract release supported by this documentation\n * publication. It is required because OpenAPI mandates a version and a\n * placeholder would make the generated reference look authoritative while\n * carrying no usable compatibility claim.\n */\n supportedApiVersion: TechnicalDocumentationSupportedApiVersionSchema,\n\n /**\n * Ceilings on the published documentation tree, applied per field over the engine\n * defaults (`TECHNICAL_DOCUMENTATION_DEFAULT_OUTPUT_BUDGETS`).\n *\n * Omitting this is the normal case and is SAFE: absence yields the engine ceilings, not\n * an unbounded build. Declare only the field an application genuinely outgrows — a\n * partial declaration keeps the others tracking the engine, so raising a page count does\n * not silently freeze a copy of every other limit at today's value.\n */\n outputBudgets: z\n .strictObject({\n maximumPageCount: z.number().int().positive().optional(),\n maximumTotalBytes: z.number().int().positive().optional(),\n maximumSearchIndexBytes: z.number().int().positive().optional(),\n })\n .optional(),\n\n /**\n * Additional byte sequences that must never appear in the PUBLIC documentation tree.\n * Publication fails naming the offending file.\n *\n * **Unioned with the engine's mandatory sentinels, never replacing them** — an\n * application can arm more canaries, and cannot disarm the engine's.\n *\n * Choose sequences that cannot legitimately appear in published prose. Generic markers\n * (`secret`, `token`, `Bearer`) fire on the authentication and webhook guides\n * themselves, and a canary that cries on correct content is one people learn to remove.\n */\n forbiddenPublicSentinels: z.array(z.string().min(1)).optional(),\n\n /**\n * Public-facing title for the docs site (browser tab title +\n * landing page header). Optional — falls back to\n * `WildoSaasConfig.displayName` when omitted.\n */\n publicMarketingTitle: z.string().min(1).max(200).optional(),\n\n /**\n * Opt-in: include framework (engine) core resources in this app's generated\n * OpenAPI, in addition to the app's own resources. This setting does not\n * mutate runtime registration: backend startup already merges the engine core\n * resource maps, then applies resolved billing/lifecycle exclusions. The dev\n * companion projects the selected core resources with those same exclusions\n * and their authored Tier-1/2/3 spec semantics.\n *\n * - `'all'` ({@link API_DOC_RESOURCES_ALL}) — document every core resource that\n * has API-bearing operations after resolved feature exclusions. Convenient,\n * but broad; it is configuration-derived eligibility, not live-route proof.\n * - `CoreResourceType[]` — a curated subset (e.g. `[CoreResourceType.ORGANIZATIONS,\n * CoreResourceType.ORGANIZATION_MEMBERS, CoreResourceType.FILES]`).\n *\n * Omitted (default): only the app's own resources are documented. Org-scoped\n * core resources land in the (auth-gated) Organization API section; any\n * anonymous ones in the Application API section — the existing section split\n * by operation access level is unchanged.\n */\n apiDocResources: z.union([\n z.array(z.enum(CoreResourceType)),\n z.literal(API_DOC_RESOURCES_ALL),\n ]).optional(),\n\n /**\n * Explicit source-owned grouping for the generated API reference.\n *\n * Omit this only when an application deliberately has no API taxonomy yet.\n * When present, it must classify every published resource exactly once:\n * categories cannot silently drift as framework or application resources are\n * added or removed. The category facts become `tags[].x-wildo.category` in\n * the canonical OpenAPI document and are consumed by the generic renderer.\n */\n apiReferenceResourceCategories: z.array(ApiReferenceResourceCategoryAssignmentSchema).min(1).optional(),\n\n /**\n * App-enriched OpenAPI `servers[]` — the base URLs the API is reachable at,\n * surfaced in the generated docs (and used by the \"Try it\" console + SDK\n * generators). **This is the one piece of auth/transport metadata the\n * framework cannot derive**: the security SCHEMES are framework-universal and\n * emitted automatically (every Wildo API uses a JWT bearer + a scoped API key\n * in the standard `Authorization` header),\n * but deployment URLs are application/environment knowledge — only the app\n * knows its staging/production domains.\n *\n * Each entry is `{ url, description? }` where `url` is the bare ORIGIN\n * (host[:port]) — do NOT append `/api/v1`: operation paths already carry that\n * mount, and the effective URL is `server.url` + path, so appending it would\n * double the prefix. Order is preserved (the first entry is the docs default).\n *\n * @example\n * ```ts\n * apiServers: [\n * { url: 'https://api.example.com', description: 'Production' },\n * { url: 'http://localhost:4241', description: 'Local development' },\n * ],\n * ```\n *\n * Omitted (default): no `servers` block is emitted (the docs still render; the\n * \"Try it\" console just has no preset target).\n */\n apiServers: z.array(OpenApiServerSchema).optional(),\n\n /**\n * App-authored markdown intro for the generated API reference landing page\n * (the OpenAPI `info.description`). Use it to frame the API in the app's own\n * voice — what it's for, key concepts, links to guides.\n *\n * This is PREPENDED to a framework-universal \"API conventions\" section the\n * generator always emits (Authentication, Base URL, Pagination, Idempotency,\n * Errors — derived from how every Wildo API behaves), so an app gets a\n * complete, accurate landing page even with no overview, and a branded one\n * when it supplies this.\n *\n * @example\n * ```ts\n * apiOverview: 'The Northstar Tasks API lets you manage projects, work items, and assignments.',\n * ```\n */\n apiOverview: z.string().min(1).max(8000).optional(),\n\n /**\n * Optional Content-Security-Policy override for the per-app nginx\n * sidecar serving the docs site (and the `<meta http-equiv>` tag\n * injected into `index.html` as a defense-in-depth fallback when\n * the bundle is served from a static host that bypasses nginx).\n *\n * Typed against `WildoCspConfigSchema` from\n * `@wildo-ai/platform-config-lib` (auth-hardening.md Slice B B-Step 1).\n * The parsed value is consumed by the build-time generator at\n * `platform-config-lib/src/project-config/shared/csp-emit.ts` (Slice B B-Step 3)\n * which produces the per-app nginx `add_header` line and the\n * `<meta http-equiv>` tag for the Docusaurus build to inject.\n *\n * Default behavior when omitted: NO policy emitted on either channel\n * (the resolver short-circuits to `null` — same as `enabled: false`).\n * Opt-in is deliberate per the schema design: frontends that have\n * not audited their third-party JS / fetch surface should not ship\n * a half-baked CSP that breaks features without protecting anything.\n */\n csp: WildoCspConfigSchema.optional(),\n});\nexport type WildoTechnicalDocConfig = z.infer<typeof WildoTechnicalDocConfigSchema>;\nexport type WildoTechnicalDocConfigInput = z.input<typeof WildoTechnicalDocConfigSchema>;\n/** @wildo_source:part:end engine.saas-technical-doc.config */\n"]}
1
+ {"version":3,"file":"wildo-tech-doc-config.schemas.js","sourceRoot":"","sources":["../../../../src/config/wildo-tech-doc-config.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,+CAA+C,EAAE,MAAM,uDAAuD,CAAC;AACxH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kCAAkC,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEpH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAc,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,kCAAkC,CAAC,MAAM,CAAC;IACpG,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACjD,CAAC,CAAC;AAGH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,YAAY,CAAC;IAC1D;;;;;OAKG;IACH,mBAAmB,EAAE,+CAA+C;IAEpE;;;;;;;;OAQG;IACH,aAAa,EAAE,CAAC;SACb,YAAY,CAAC;QACZ,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACxD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACzD,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAChE,CAAC;SACD,QAAQ,EAAE;IAEb;;;;;;;;;;OAUG;IACH,wBAAwB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAE/D;;;;OAIG;IACH,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAE3D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;KACjC,CAAC,CAAC,QAAQ,EAAE;IAEb;;;;;;;;OAQG;IACH,8BAA8B,EAAE,CAAC,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAEvG;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;IAEnD;;;;;;;;;;;;;;;OAeG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAEnD;;;;;;;;;;;;;;;;;;OAkBG;IACH,GAAG,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,8DAA8D","sourcesContent":["/**\n * @wildo_source:part:start engine.saas-technical-doc.config facet:layer:engine facet:family:technical-doc\n *\n * Per-service technical-documentation configuration authored as\n * `wildo.tech-doc.config.ts`. The strict schema owns only settings with live\n * consumers: publication budgets and public sentinels, API-reference inputs,\n * presentation metadata, and the docs service CSP. Framework narrative content\n * comes from the engine topic catalogue, not from application-local recipes.\n */\n\nimport { WildoCspConfigSchema } from '@wildo-ai/platform-config-lib';\nimport { CoreResourceType } from '@wildo-ai/saas-models';\nimport { TechnicalDocumentationSupportedApiVersionSchema } from '@wildo-ai/saas-specifications/technical-documentation';\nimport { z } from 'zod';\nimport { ApiReferenceResourceCategorySchema, OpenApiServerSchema } from '../companion/operation-projection.schemas';\n\n/**\n * Sentinel for `apiDocResources` meaning \"document every core resource that has\n * API-bearing operations\" — the full framework resource catalog. Distinct from\n * an explicit curated array so an app can opt into everything without listing\n * (and re-listing, as the engine grows) every `CoreResourceType` by hand.\n */\nexport const API_DOC_RESOURCES_ALL = 'all' as const;\n\n/**\n * One complete category declaration for the resources published by this API\n * reference. `resourceNames` uses the generated OpenAPI tag name, which is\n * the resolved resource identifier, rather than a display label or a\n * filesystem location. The companion rejects a duplicate, stale or missing\n * assignment whenever this feature is configured.\n */\nexport const ApiReferenceResourceCategoryAssignmentSchema = ApiReferenceResourceCategorySchema.extend({\n resourceNames: z.array(z.string().min(1)).min(1),\n});\nexport type ApiReferenceResourceCategoryAssignment = z.infer<typeof ApiReferenceResourceCategoryAssignmentSchema>;\n\n/**\n * Per-service technical-documentation configuration block.\n *\n * Authored as `export default defineTechnicalDocConfig({...})` in\n * `<tech-doc-service-root>/wildo.tech-doc.config.ts`. The companion\n * loads this file once at bootstrap via jiti and projects fields\n * into the OpenAPI generator and Docusaurus/CSP build surfaces.\n *\n * @example\n * ```ts\n * import { defineTechnicalDocConfig } from '@wildo-ai/saas-technical-doc';\n *\n * export default defineTechnicalDocConfig({\n * supportedApiVersion: '1.0.0',\n * publicMarketingTitle: 'Northstar Tasks — Technical Documentation',\n * apiDocResources: 'all', // also document every core engine resource\n * });\n * ```\n */\nexport const WildoTechnicalDocConfigSchema = z.strictObject({\n /**\n * Exact public API contract release supported by this documentation\n * publication. It is required because OpenAPI mandates a version and a\n * placeholder would make the generated reference look authoritative while\n * carrying no usable compatibility claim.\n */\n supportedApiVersion: TechnicalDocumentationSupportedApiVersionSchema,\n\n /**\n * Ceilings on the published documentation tree, applied per field over the engine\n * defaults (`TECHNICAL_DOCUMENTATION_DEFAULT_OUTPUT_BUDGETS`).\n *\n * Omitting this is the normal case and is SAFE: absence yields the engine ceilings, not\n * an unbounded build. Declare only the field an application genuinely outgrows — a\n * partial declaration keeps the others tracking the engine, so raising a page count does\n * not silently freeze a copy of every other limit at today's value.\n */\n outputBudgets: z\n .strictObject({\n maximumPageCount: z.number().int().positive().optional(),\n maximumTotalBytes: z.number().int().positive().optional(),\n maximumSearchIndexBytes: z.number().int().positive().optional(),\n })\n .optional(),\n\n /**\n * Additional byte sequences that must never appear in the PUBLIC documentation tree.\n * Publication fails naming the offending file.\n *\n * **Unioned with the engine's mandatory sentinels, never replacing them** — an\n * application can arm more canaries, and cannot disarm the engine's.\n *\n * Choose sequences that cannot legitimately appear in published prose. Generic markers\n * (`secret`, `token`, `Bearer`) fire on the authentication and webhook guides\n * themselves, and a canary that cries on correct content is one people learn to remove.\n */\n forbiddenPublicSentinels: z.array(z.string().min(1)).optional(),\n\n /**\n * Public-facing title for the docs site (browser tab title +\n * landing page header). Optional — falls back to\n * `WildoSaasConfig.displayName` when omitted.\n */\n publicMarketingTitle: z.string().min(1).max(200).optional(),\n\n /**\n * Opt-in: include framework (engine) core resources in this app's generated\n * OpenAPI, in addition to the app's own resources. This setting does not\n * mutate runtime registration: backend startup already merges the engine core\n * resource maps, then applies resolved billing/lifecycle exclusions. The dev\n * companion projects the selected core resources with those same exclusions\n * and their authored Tier-1/2/3 spec semantics.\n *\n * - `'all'` ({@link API_DOC_RESOURCES_ALL}) — document every core resource that\n * has API-bearing operations after resolved feature exclusions. Convenient,\n * but broad; it is configuration-derived eligibility, not live-route proof.\n * - `CoreResourceType[]` — a curated subset (e.g. `[CoreResourceType.ORGANIZATIONS,\n * CoreResourceType.ORGANIZATION_MEMBERS, CoreResourceType.FILES]`).\n *\n * Omitted (default): only the app's own resources are documented.\n *\n * There is no organizational section. `OpenApiSection` has exactly two members,\n * `API_REFERENCE` and `APPLICATION_ADMINISTRATION_API_REFERENCE`, neither of which is scoped to\n * an organization. The split is made per OPERATION, from the `consumerApiSection` the source\n * projector resolves, so a selected core resource's operations may land in either. Nothing the\n * docs site emits is auth-gated; see `docs-auth-session.schemas.ts` for why the decoded role axis\n * is not a control.\n */\n apiDocResources: z.union([\n z.array(z.enum(CoreResourceType)),\n z.literal(API_DOC_RESOURCES_ALL),\n ]).optional(),\n\n /**\n * Explicit source-owned grouping for the generated API reference.\n *\n * Omit this only when an application deliberately has no API taxonomy yet.\n * When present, it must classify every published resource exactly once:\n * categories cannot silently drift as framework or application resources are\n * added or removed. The category facts become `tags[].x-wildo.category` in\n * the canonical OpenAPI document and are consumed by the generic renderer.\n */\n apiReferenceResourceCategories: z.array(ApiReferenceResourceCategoryAssignmentSchema).min(1).optional(),\n\n /**\n * App-enriched OpenAPI `servers[]` — the base URLs the API is reachable at,\n * surfaced in the generated docs (and used by the \"Try it\" console + SDK\n * generators). **This is the one piece of auth/transport metadata the\n * framework cannot derive**: the security SCHEMES are framework-universal and\n * emitted automatically (every Wildo API uses a JWT bearer + a scoped API key\n * in the standard `Authorization` header),\n * but deployment URLs are application/environment knowledge — only the app\n * knows its staging/production domains.\n *\n * Each entry is `{ url, description? }` where `url` is the bare ORIGIN\n * (host[:port]) — do NOT append `/api/v1`: operation paths already carry that\n * mount, and the effective URL is `server.url` + path, so appending it would\n * double the prefix. Order is preserved (the first entry is the docs default).\n *\n * @example\n * ```ts\n * apiServers: [\n * { url: 'https://api.example.com', description: 'Production' },\n * { url: 'http://localhost:4241', description: 'Local development' },\n * ],\n * ```\n *\n * Omitted (default): no `servers` block is emitted (the docs still render; the\n * \"Try it\" console just has no preset target).\n */\n apiServers: z.array(OpenApiServerSchema).optional(),\n\n /**\n * App-authored markdown intro for the generated API reference landing page\n * (the OpenAPI `info.description`). Use it to frame the API in the app's own\n * voice — what it's for, key concepts, links to guides.\n *\n * This is PREPENDED to a framework-universal \"API conventions\" section the\n * generator always emits (Authentication, Base URL, Pagination, Idempotency,\n * Errors — derived from how every Wildo API behaves), so an app gets a\n * complete, accurate landing page even with no overview, and a branded one\n * when it supplies this.\n *\n * @example\n * ```ts\n * apiOverview: 'The Northstar Tasks API lets you manage projects, work items, and assignments.',\n * ```\n */\n apiOverview: z.string().min(1).max(8000).optional(),\n\n /**\n * Optional Content-Security-Policy override for the per-app nginx\n * sidecar serving the docs site (and the `<meta http-equiv>` tag\n * injected into `index.html` as a defense-in-depth fallback when\n * the bundle is served from a static host that bypasses nginx).\n *\n * Typed against `WildoCspConfigSchema` from\n * `@wildo-ai/platform-config-lib` (auth-hardening.md Slice B B-Step 1).\n * The parsed value is consumed by the build-time generator at\n * `platform-config-lib/src/project-config/shared/csp-emit.ts` (Slice B B-Step 3)\n * which produces the per-app nginx `add_header` line and the\n * `<meta http-equiv>` tag for the Docusaurus build to inject.\n *\n * Default behavior when omitted: NO policy emitted on either channel\n * (the resolver short-circuits to `null` — same as `enabled: false`).\n * Opt-in is deliberate per the schema design: frontends that have\n * not audited their third-party JS / fetch surface should not ship\n * a half-baked CSP that breaks features without protecting anything.\n */\n csp: WildoCspConfigSchema.optional(),\n});\nexport type WildoTechnicalDocConfig = z.infer<typeof WildoTechnicalDocConfigSchema>;\nexport type WildoTechnicalDocConfigInput = z.input<typeof WildoTechnicalDocConfigSchema>;\n/** @wildo_source:part:end engine.saas-technical-doc.config */\n"]}