@contractspec/module.examples 1.44.1 → 1.45.1
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.
- package/dist/builtins.js.map +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.js +3 -4
- package/dist/libs/contracts/dist/_virtual/rolldown_runtime.js +6 -0
- package/dist/libs/contracts/dist/_virtual/rolldown_runtime.js.map +1 -0
- package/dist/libs/contracts/dist/app-config/spec.js +1 -0
- package/dist/libs/contracts/dist/capabilities/capabilities.js +1 -0
- package/dist/libs/contracts/dist/capabilities/index.js +2 -0
- package/dist/libs/contracts/dist/capabilities/openbanking.js +89 -0
- package/dist/libs/contracts/dist/capabilities/openbanking.js.map +1 -0
- package/dist/libs/contracts/dist/client/index.js +5 -0
- package/dist/libs/contracts/dist/client/react/feature-render.js +3 -0
- package/dist/libs/contracts/dist/client/react/form-render.js +6 -0
- package/dist/libs/contracts/dist/client/react/index.js +4 -0
- package/dist/libs/contracts/dist/contract-registry/index.js +1 -0
- package/dist/libs/contracts/dist/contract-registry/schemas.js +61 -0
- package/dist/libs/contracts/dist/contract-registry/schemas.js.map +1 -0
- package/dist/libs/contracts/dist/data-views/index.js +1 -0
- package/dist/libs/contracts/dist/data-views/registry.js +1 -0
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +17 -0
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/index.js +27 -0
- package/dist/libs/contracts/dist/docs/meta.docs.js +30 -0
- package/dist/libs/contracts/dist/docs/meta.docs.js.map +1 -0
- package/dist/libs/contracts/dist/docs/presentations.js +57 -0
- package/dist/libs/contracts/dist/docs/presentations.js.map +1 -0
- package/dist/libs/contracts/dist/docs/registry.js +45 -0
- package/dist/libs/contracts/dist/docs/registry.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +81 -0
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +58 -0
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-import.docblock.js +65 -0
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-import.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +17 -0
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +358 -0
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +38 -0
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +17 -0
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +21 -0
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +49 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +80 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +85 -0
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +46 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +68 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +41 -0
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +70 -0
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +48 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +63 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +156 -0
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +21 -0
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +102 -0
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech-contracts.docs.js +97 -0
- package/dist/libs/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
- package/dist/libs/contracts/dist/events.js +2 -0
- package/dist/libs/contracts/dist/examples/index.js +3 -0
- package/dist/libs/contracts/dist/examples/registry.js +145 -0
- package/dist/libs/contracts/dist/examples/registry.js.map +1 -0
- package/dist/libs/contracts/dist/examples/schema.js +102 -0
- package/dist/libs/contracts/dist/examples/schema.js.map +1 -0
- package/dist/libs/contracts/dist/examples/validation.js +1 -0
- package/dist/libs/contracts/dist/experiments/evaluator.js +1 -0
- package/dist/libs/contracts/dist/experiments/spec.js +1 -0
- package/dist/libs/contracts/dist/features/index.js +1 -0
- package/dist/libs/contracts/dist/features/registry.js +7 -0
- package/dist/libs/contracts/dist/features/registry.js.map +1 -0
- package/dist/libs/contracts/dist/forms/forms.js +2 -0
- package/dist/libs/contracts/dist/forms/index.js +1 -0
- package/dist/libs/contracts/dist/index.js +109 -0
- package/dist/libs/contracts/dist/index.js.map +1 -0
- package/dist/libs/contracts/dist/install.js +2 -0
- package/dist/libs/contracts/dist/integrations/index.js +19 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +230 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +161 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +3 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +212 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/models.js +243 -0
- package/dist/libs/contracts/dist/integrations/openbanking/models.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +14 -0
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/operations.js +384 -0
- package/dist/libs/contracts/dist/integrations/operations.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +52 -0
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +75 -0
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/gmail.js +87 -0
- package/dist/libs/contracts/dist/integrations/providers/gmail.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +66 -0
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/index.js +11 -0
- package/dist/libs/contracts/dist/integrations/providers/mistral.js +68 -0
- package/dist/libs/contracts/dist/integrations/providers/mistral.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/postmark.js +68 -0
- package/dist/libs/contracts/dist/integrations/providers/postmark.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/powens.js +116 -0
- package/dist/libs/contracts/dist/integrations/providers/powens.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js +73 -0
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/registry.js +11 -0
- package/dist/libs/contracts/dist/integrations/providers/stripe.js +83 -0
- package/dist/libs/contracts/dist/integrations/providers/stripe.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +61 -0
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/spec.js +1 -0
- package/dist/libs/contracts/dist/jsonschema.js +1 -0
- package/dist/libs/contracts/dist/knowledge/index.js +8 -0
- package/dist/libs/contracts/dist/knowledge/operations.js +313 -0
- package/dist/libs/contracts/dist/knowledge/operations.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +34 -0
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +34 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +38 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/index.js +6 -0
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +34 -0
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +37 -0
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +34 -0
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spec.js +1 -0
- package/dist/libs/contracts/dist/llm/exporters.js +21 -0
- package/dist/libs/contracts/dist/llm/exporters.js.map +1 -0
- package/dist/libs/contracts/dist/llm/index.js +2 -0
- package/dist/libs/contracts/dist/llm/prompts.js +1 -0
- package/dist/libs/contracts/dist/migrations.js +1 -0
- package/dist/libs/contracts/dist/model-registry.js +1 -0
- package/dist/libs/contracts/dist/onboarding-base.js +198 -0
- package/dist/libs/contracts/dist/onboarding-base.js.map +1 -0
- package/dist/libs/contracts/dist/openapi.js +2 -0
- package/dist/libs/contracts/dist/operations/index.js +2 -0
- package/dist/libs/contracts/dist/operations/operation.js +35 -0
- package/dist/libs/contracts/dist/operations/operation.js.map +1 -0
- package/dist/libs/contracts/dist/operations/registry.js +2 -0
- package/dist/libs/contracts/dist/ownership.js +22 -0
- package/dist/libs/contracts/dist/ownership.js.map +1 -0
- package/dist/libs/contracts/dist/policy/engine.js +1 -0
- package/dist/libs/contracts/dist/policy/index.js +2 -0
- package/dist/libs/contracts/dist/policy/registry.js +1 -0
- package/dist/libs/contracts/dist/presentations/index.js +2 -0
- package/dist/libs/contracts/dist/presentations/registry.js +1 -0
- package/dist/libs/contracts/dist/presentations/transform-engine.js +13 -0
- package/dist/libs/contracts/dist/presentations/transform-engine.js.map +1 -0
- package/dist/libs/contracts/dist/prompt.js +1 -0
- package/dist/libs/contracts/dist/promptRegistry.js +2 -0
- package/dist/libs/contracts/dist/regenerator/index.js +1 -0
- package/dist/libs/contracts/dist/regenerator/service.js +5 -0
- package/dist/libs/contracts/dist/regenerator/service.js.map +1 -0
- package/dist/libs/contracts/dist/registry-utils.js +71 -0
- package/dist/libs/contracts/dist/registry-utils.js.map +1 -0
- package/dist/libs/contracts/dist/registry.js +8 -0
- package/dist/libs/contracts/dist/registry.js.map +1 -0
- package/dist/libs/contracts/dist/resources.js +1 -0
- package/dist/libs/contracts/dist/schema-to-markdown.js +1 -0
- package/dist/libs/contracts/dist/server/contracts-adapter-input.js +1 -0
- package/dist/libs/contracts/dist/server/graphql-pothos.js +8 -0
- package/dist/libs/contracts/dist/server/index.js +8 -0
- package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +4 -0
- package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +2 -0
- package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +1 -0
- package/dist/libs/contracts/dist/server/mcp/registerResources.js +2 -0
- package/dist/libs/contracts/dist/server/mcp/registerTools.js +1 -0
- package/dist/libs/contracts/dist/server/provider-mcp.js +1 -0
- package/dist/libs/contracts/dist/server/rest-elysia.js +1 -0
- package/dist/libs/contracts/dist/server/rest-express.js +1 -0
- package/dist/libs/contracts/dist/server/rest-generic.js +1 -0
- package/dist/libs/contracts/dist/server/rest-next-app.js +1 -0
- package/dist/libs/contracts/dist/server/rest-next-pages.js +1 -0
- package/dist/libs/contracts/dist/telemetry/index.js +2 -0
- package/dist/libs/contracts/dist/telemetry/spec.js +2 -0
- package/dist/libs/contracts/dist/telemetry/tracker.js +1 -0
- package/dist/libs/contracts/dist/tests/index.js +2 -0
- package/dist/libs/contracts/dist/tests/runner.js +2 -0
- package/dist/libs/contracts/dist/tests/spec.js +1 -0
- package/dist/libs/contracts/dist/themes.js +1 -0
- package/dist/libs/contracts/dist/workflow/index.js +2 -0
- package/dist/libs/contracts/dist/workflow/overview.docblock.js +21 -0
- package/dist/libs/contracts/dist/workflow/overview.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/workflow/runner.js +1 -0
- package/dist/libs/contracts/dist/workflow/spec.js +1 -0
- package/dist/libs/contracts/dist/workspace-config/contractsrc-schema.js +263 -0
- package/dist/libs/contracts/dist/workspace-config/contractsrc-schema.js.map +1 -0
- package/dist/libs/contracts/dist/workspace-config/index.js +1 -0
- package/dist/libs/contracts/dist/workspace-config/workspace-config.docblock.js +45 -0
- package/dist/libs/contracts/dist/workspace-config/workspace-config.docblock.js.map +1 -0
- package/dist/libs/schema/dist/EnumType.js +2 -0
- package/dist/libs/schema/dist/FieldType.js +50 -0
- package/dist/libs/schema/dist/FieldType.js.map +1 -0
- package/dist/libs/schema/dist/GraphQLSchemaType.js +1 -0
- package/dist/libs/schema/dist/JsonSchemaType.js +1 -0
- package/dist/libs/schema/dist/ScalarTypeEnum.js +237 -0
- package/dist/libs/schema/dist/ScalarTypeEnum.js.map +1 -0
- package/dist/libs/schema/dist/SchemaModel.js +35 -0
- package/dist/libs/schema/dist/SchemaModel.js.map +1 -0
- package/dist/libs/schema/dist/ZodSchemaType.js +1 -0
- package/dist/libs/schema/dist/entity/defineEntity.js +1 -0
- package/dist/libs/schema/dist/entity/index.js +2 -0
- package/dist/libs/schema/dist/entity/types.js +1 -0
- package/dist/libs/schema/dist/index.js +9 -0
- package/dist/registry.d.ts +20 -6
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +24 -10
- package/dist/registry.js.map +1 -1
- package/package.json +37 -37
- package/dist/builtins.d.ts +0 -7
- package/dist/builtins.d.ts.map +0 -1
- package/dist/types.d.ts +0 -53
- package/dist/types.d.ts.map +0 -1
- package/dist/validate.d.ts +0 -19
- package/dist/validate.d.ts.map +0 -1
- package/dist/validate.js +0 -90
- package/dist/validate.js.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import "../schema-to-markdown.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import TurndownService from "turndown";
|
|
4
|
+
|
|
5
|
+
//#region ../../libs/contracts/dist/presentations/transform-engine.js
|
|
6
|
+
/**
|
|
7
|
+
* Pluggable transform engine that renders descriptors to various targets
|
|
8
|
+
* and runs validators (e.g., basic metadata checks, PII redaction policies).
|
|
9
|
+
*/
|
|
10
|
+
const turndown = new TurndownService();
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
//# sourceMappingURL=transform-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-engine.js","names":[],"sources":["../../../../../../../libs/contracts/dist/presentations/transform-engine.js"],"sourcesContent":["import { schemaToMarkdown } from \"../schema-to-markdown.js\";\nimport React from \"react\";\nimport TurndownService from \"turndown\";\n\n//#region src/presentations/transform-engine.ts\n/**\n* Pluggable transform engine that renders descriptors to various targets\n* and runs validators (e.g., basic metadata checks, PII redaction policies).\n*/\nconst turndown = new TurndownService();\nfunction renderTextNode(node) {\n\tconst text = node.text ?? \"\";\n\tif (!node.marks || node.marks.length === 0) return text;\n\treturn node.marks.reduce((acc, mark) => {\n\t\tswitch (mark.type) {\n\t\t\tcase \"bold\": return `**${acc}**`;\n\t\t\tcase \"italic\": return `*${acc}*`;\n\t\t\tcase \"underline\": return `__${acc}__`;\n\t\t\tcase \"strike\": return `~~${acc}~~`;\n\t\t\tcase \"code\": return `\\`${acc}\\``;\n\t\t\tcase \"link\": {\n\t\t\t\tconst href = mark.attrs?.href ?? \"\";\n\t\t\t\treturn href ? `[${acc}](${href})` : acc;\n\t\t\t}\n\t\t\tdefault: return acc;\n\t\t}\n\t}, text);\n}\nfunction renderInline(nodes) {\n\tif (!nodes?.length) return \"\";\n\treturn nodes.map((child) => renderNode(child)).join(\"\");\n}\nfunction renderList(nodes, ordered = false) {\n\tif (!nodes?.length) return \"\";\n\tlet counter = 1;\n\treturn nodes.map((item) => {\n\t\tconst body = renderInline(item.content ?? []);\n\t\tif (!body) return \"\";\n\t\treturn `${ordered ? `${counter++}. ` : \"- \"}${body}`;\n\t}).filter(Boolean).join(\"\\n\");\n}\nfunction renderNode(node) {\n\tswitch (node.type) {\n\t\tcase \"doc\": return renderInline(node.content);\n\t\tcase \"paragraph\": {\n\t\t\tconst text = renderInline(node.content);\n\t\t\treturn text.trim().length ? text : \"\";\n\t\t}\n\t\tcase \"heading\": {\n\t\t\tconst levelAttr = node.attrs?.level;\n\t\t\tconst levelVal = typeof levelAttr === \"number\" ? levelAttr : 1;\n\t\t\tconst level = Math.min(Math.max(levelVal, 1), 6);\n\t\t\treturn `${\"#\".repeat(level)} ${renderInline(node.content)}`.trim();\n\t\t}\n\t\tcase \"bullet_list\": return renderList(node.content, false);\n\t\tcase \"ordered_list\": return renderList(node.content, true);\n\t\tcase \"list_item\": return renderInline(node.content);\n\t\tcase \"blockquote\": return renderInline(node.content).split(\"\\n\").map((line) => `> ${line}`).join(\"\\n\");\n\t\tcase \"code_block\": {\n\t\t\tconst body = renderInline(node.content);\n\t\t\treturn body ? `\\`\\`\\`\\n${body}\\n\\`\\`\\`` : \"\";\n\t\t}\n\t\tcase \"horizontal_rule\": return \"---\";\n\t\tcase \"hard_break\": return \"\\n\";\n\t\tcase \"text\": return renderTextNode(node);\n\t\tdefault:\n\t\t\tif (node.text) return renderTextNode(node);\n\t\t\treturn \"\";\n\t}\n}\nfunction blockNoteToMarkdown(docJson) {\n\tif (typeof docJson === \"string\") return docJson;\n\tif (docJson && typeof docJson === \"object\" && \"html\" in docJson) {\n\t\tconst html = String(docJson.html);\n\t\treturn turndown.turndown(html);\n\t}\n\tconst root = docJson;\n\tif (root?.type === \"doc\" || root?.content) return (root.content ?? []).map((n) => renderNode(n)).filter(Boolean).join(\"\\n\\n\").trim();\n\ttry {\n\t\treturn JSON.stringify(docJson, null, 2);\n\t} catch {\n\t\treturn String(docJson);\n\t}\n}\nvar TransformEngine = class {\n\trenderers = /* @__PURE__ */ new Map();\n\tvalidators = [];\n\tregister(renderer) {\n\t\tconst arr = this.renderers.get(renderer.target) ?? [];\n\t\tarr.push(renderer);\n\t\tthis.renderers.set(renderer.target, arr);\n\t\treturn this;\n\t}\n\t/**\n\t* Register a renderer that will be tried BEFORE existing renderers for the same target.\n\t* Useful for custom renderers that should take priority over default ones.\n\t*/\n\tprependRegister(renderer) {\n\t\tconst arr = this.renderers.get(renderer.target) ?? [];\n\t\tarr.unshift(renderer);\n\t\tthis.renderers.set(renderer.target, arr);\n\t\treturn this;\n\t}\n\taddValidator(v) {\n\t\tthis.validators.push(v);\n\t\treturn this;\n\t}\n\tasync render(target, desc, ctx) {\n\t\tif (!desc.targets.includes(target)) throw new Error(`Target ${target} not declared for ${desc.meta.key}.v${desc.meta.version}`);\n\t\tfor (const v of this.validators) await v.validate(desc, target, ctx);\n\t\tconst arr = this.renderers.get(target) ?? [];\n\t\tfor (const r of arr) try {\n\t\t\treturn await r.render(desc, ctx);\n\t\t} catch (_e) {}\n\t\tthrow new Error(`No renderer available for ${target}`);\n\t}\n};\n/** Create a TransformEngine instance with default markdown/json/xml renderers. */\nfunction createDefaultTransformEngine() {\n\tconst engine = new TransformEngine();\n\tconst applyPii = (desc, obj) => {\n\t\tconst clone = JSON.parse(JSON.stringify(obj));\n\t\tconst paths = desc.policy?.pii ?? [];\n\t\tconst setAtPath = (root, path) => {\n\t\t\tconst segs = path.replace(/^\\//, \"\").replace(/\\[(\\d+)\\]/g, \".$1\").split(\".\").filter(Boolean);\n\t\t\tlet cur = root;\n\t\t\tfor (let i = 0; i < segs.length - 1; i++) {\n\t\t\t\tconst k = segs[i];\n\t\t\t\tif (!k) continue;\n\t\t\t\tif (cur && typeof cur === \"object\" && k in cur) cur = cur[k];\n\t\t\t\telse return;\n\t\t\t}\n\t\t\tconst last = segs[segs.length - 1];\n\t\t\tif (cur && typeof cur === \"object\" && last && last in cur) cur[last] = \"[REDACTED]\";\n\t\t};\n\t\tfor (const p of paths) setAtPath(clone, p);\n\t\treturn clone;\n\t};\n\tengine.register({\n\t\ttarget: \"markdown\",\n\t\tasync render(desc, ctx) {\n\t\t\tlet data = ctx?.data;\n\t\t\tif (!data && ctx?.fetchData) data = await ctx.fetchData();\n\t\t\tif (desc.source.type === \"component\" && desc.source.props && data !== void 0) {\n\t\t\t\tconst isArray = Array.isArray(data);\n\t\t\t\tconst isSimpleObject = !isArray && typeof data === \"object\" && data !== null && !Object.values(data).some((v) => Array.isArray(v) || typeof v === \"object\" && v !== null);\n\t\t\t\tif (isArray || isSimpleObject) return {\n\t\t\t\t\tmimeType: \"text/markdown\",\n\t\t\t\t\tbody: schemaToMarkdown(desc.source.props, data, {\n\t\t\t\t\t\ttitle: desc.meta.description ?? desc.meta.key,\n\t\t\t\t\t\tdescription: `${desc.meta.key} v${desc.meta.version}`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tthrow new Error(`Complex data structure for ${desc.meta.key} - expecting custom renderer`);\n\t\t\t}\n\t\t\tif (desc.source.type === \"blocknotejs\") {\n\t\t\t\tconst redacted = applyPii(desc, { text: blockNoteToMarkdown(desc.source.docJson) });\n\t\t\t\treturn {\n\t\t\t\t\tmimeType: \"text/markdown\",\n\t\t\t\t\tbody: String(redacted.text)\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (desc.source.type === \"component\" && data !== void 0) throw new Error(`No schema (source.props) available for ${desc.meta.key} - expecting custom renderer`);\n\t\t\tif (desc.source.type === \"component\") return {\n\t\t\t\tmimeType: \"text/markdown\",\n\t\t\t\tbody: `${`# ${desc.meta.key} v${desc.meta.version}`}${desc.meta.description ? `\\n\\n${desc.meta.description}` : \"\"}${desc.meta.tags && desc.meta.tags.length ? `\\n\\nTags: ${desc.meta.tags.join(\", \")}` : \"\"}${desc.meta.owners && desc.meta.owners.length ? `\\n\\nOwners: ${desc.meta.owners.join(\", \")}` : \"\"}${`\\n\\nComponent: \\`${desc.source.componentKey}\\``}${desc.policy?.pii?.length ? `\\n\\nRedacted paths: ${desc.policy.pii.map((p) => `\\`${p}\\``).join(\", \")}` : \"\"}`\n\t\t\t};\n\t\t\tthrow new Error(\"unsupported\");\n\t\t}\n\t});\n\tengine.register({\n\t\ttarget: \"application/json\",\n\t\tasync render(desc) {\n\t\t\tconst payload = applyPii(desc, {\n\t\t\t\tmeta: desc.meta,\n\t\t\t\tsource: desc.source\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tmimeType: \"application/json\",\n\t\t\t\tbody: JSON.stringify(payload, null, 2)\n\t\t\t};\n\t\t}\n\t});\n\tengine.register({\n\t\ttarget: \"application/xml\",\n\t\tasync render(desc) {\n\t\t\tconst json = applyPii(desc, {\n\t\t\t\tmeta: desc.meta,\n\t\t\t\tsource: desc.source\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tmimeType: \"application/xml\",\n\t\t\t\tbody: `<presentation name=\"${desc.meta.key}\" version=\"${desc.meta.version}\"><json>${encodeURIComponent(JSON.stringify(json))}</json></presentation>`\n\t\t\t};\n\t\t}\n\t});\n\treturn engine;\n}\n/** Register a default React target renderer that returns a serializable descriptor. */\nfunction registerDefaultReactRenderer(engine) {\n\tengine.register({\n\t\ttarget: \"react\",\n\t\tasync render(desc) {\n\t\t\tif (desc.source.type === \"component\") {\n\t\t\t\tconst props = desc.source.props ? desc.source.props.getZod().safeParse({}).success ? {} : void 0 : void 0;\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"react_component\",\n\t\t\t\t\tcomponentKey: desc.source.componentKey,\n\t\t\t\t\tprops\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tkind: \"blocknotejs\",\n\t\t\t\tdocJson: desc.source.docJson,\n\t\t\t\tblockConfig: desc.source.blockConfig\n\t\t\t};\n\t\t}\n\t});\n\treturn engine;\n}\n/**\n* Add basic validators (e.g., meta.description presence) to the engine.\n*/\nfunction registerBasicValidation(engine) {\n\tengine.addValidator({ validate(desc) {\n\t\tif (!desc.meta.description || desc.meta.description.length < 3) throw new Error(`Presentation ${desc.meta.key}.v${desc.meta.version} missing meta.description`);\n\t} });\n\treturn engine;\n}\n/**\n* Register a React-to-markdown renderer that renders React components to HTML\n* and converts them to markdown using turndown.\n* This renderer takes priority over the default metadata-only renderer.\n*/\nfunction registerReactToMarkdownRenderer(engine, componentMap) {\n\tconst turndownService = new TurndownService({\n\t\theadingStyle: \"atx\",\n\t\tcodeBlockStyle: \"fenced\",\n\t\tbulletListMarker: \"-\"\n\t});\n\tturndownService.addRule(\"link\", {\n\t\tfilter: \"a\",\n\t\treplacement: (content, node) => {\n\t\t\tconst href = node.href;\n\t\t\tif (href && content) return `[${content}](${href})`;\n\t\t\treturn content || \"\";\n\t\t}\n\t});\n\tengine.prependRegister({\n\t\ttarget: \"markdown\",\n\t\tasync render(desc, _ctx) {\n\t\t\tif (desc.source.type !== \"component\") throw new Error(\"React-to-markdown renderer only handles component presentations\");\n\t\t\tconst { renderToStaticMarkup } = await import(\"react-dom/server\");\n\t\t\tconst Component = componentMap[desc.source.componentKey];\n\t\t\tif (!Component) throw new Error(`Component ${desc.source.componentKey} not found in componentMap`);\n\t\t\tlet html;\n\t\t\ttry {\n\t\t\t\thtml = renderToStaticMarkup(React.createElement(Component, desc.source.props ? {} : void 0));\n\t\t\t} catch (error) {\n\t\t\t\tthrow new Error(`Failed to render component ${desc.source.componentKey}: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n\t\t\t}\n\t\t\tlet markdown;\n\t\t\ttry {\n\t\t\t\tmarkdown = turndownService.turndown(html);\n\t\t\t} catch (error) {\n\t\t\t\tthrow new Error(`Failed to convert HTML to markdown: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n\t\t\t}\n\t\t\tif (desc.policy?.pii && desc.policy.pii.length > 0) return {\n\t\t\t\tmimeType: \"text/markdown\",\n\t\t\t\tbody: markdown.replace(/\\[REDACTED\\]/g, \"[REDACTED]\")\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tmimeType: \"text/markdown\",\n\t\t\t\tbody: markdown\n\t\t\t};\n\t\t}\n\t});\n\treturn engine;\n}\n\n//#endregion\nexport { TransformEngine, createDefaultTransformEngine, registerBasicValidation, registerDefaultReactRenderer, registerReactToMarkdownRenderer };"],"mappings":";;;;;;;;;AASA,MAAM,WAAW,IAAI,iBAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "zod";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./service.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","names":[],"sources":["../../../../../../../libs/contracts/dist/regenerator/service.js"],"sourcesContent":["import { behaviorToEnvelope, errorToEnvelope, telemetryToEnvelope } from \"./utils.js\";\n\n//#region src/regenerator/service.ts\n/** Cross-platform delay that works in browser and Node.js */\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nconst DEFAULT_POLL_INTERVAL = 6e4;\nconst DEFAULT_BATCH_DURATION = 5 * 6e4;\nvar RegeneratorService = class {\n\tcontexts;\n\tlastPoll = /* @__PURE__ */ new Map();\n\ttimer;\n\trunning = false;\n\tpollInterval;\n\tbatchDuration;\n\tclock;\n\tconstructor(options) {\n\t\tthis.options = options;\n\t\tthis.contexts = new Map(options.contexts.map((ctx) => [ctx.id, ctx]));\n\t\tthis.pollInterval = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL;\n\t\tthis.batchDuration = options.batchDurationMs ?? DEFAULT_BATCH_DURATION;\n\t\tthis.clock = options.clock ?? (() => /* @__PURE__ */ new Date());\n\t\tif (this.options.rules.length === 0) throw new Error(\"RegeneratorService requires at least one rule\");\n\t}\n\tstart() {\n\t\tif (this.running) return;\n\t\tthis.running = true;\n\t\tthis.tick();\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.tick();\n\t\t}, this.pollInterval);\n\t}\n\tstop() {\n\t\tif (!this.running) return;\n\t\tthis.running = false;\n\t\tif (this.timer) {\n\t\t\tclearInterval(this.timer);\n\t\t\tthis.timer = void 0;\n\t\t}\n\t}\n\tasync runOnce() {\n\t\tawait this.tick();\n\t}\n\tasync tick() {\n\t\tconst now = this.clock();\n\t\tconst sinceDefault = new Date(now.getTime() - this.batchDuration);\n\t\tfor (const context of this.contexts.values()) {\n\t\t\tconst last = this.lastPoll.get(context.id) ?? sinceDefault;\n\t\t\tawait this.evaluateContext(context, last, now);\n\t\t\tthis.lastPoll.set(context.id, now);\n\t\t}\n\t}\n\tasync evaluateContext(context, since, until) {\n\t\tconst signals = await this.collectSignals(context, since, until);\n\t\tif (signals.length === 0) return;\n\t\tfor (const rule of this.options.rules) {\n\t\t\tlet proposals = [];\n\t\t\ttry {\n\t\t\t\tproposals = await rule.evaluate(context, signals);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(`[regenerator] rule ${rule.id} failed`, error instanceof Error ? error : new Error(String(error)));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tawait this.flushProposals(context, proposals);\n\t\t}\n\t}\n\tasync collectSignals(context, since, until) {\n\t\tconst envelopes = [];\n\t\tconst { adapters } = this.options;\n\t\tif (adapters.telemetry) {\n\t\t\tconst telemetrySignals = await adapters.telemetry.pollTelemetry(context, since, until);\n\t\t\tenvelopes.push(...telemetrySignals.map((signal) => telemetryToEnvelope(context.id, signal, this.clock)));\n\t\t}\n\t\tif (adapters.errors) {\n\t\t\tconst errorSignals = await adapters.errors.pollErrors(context, since, until);\n\t\t\tenvelopes.push(...errorSignals.map((signal) => errorToEnvelope(context.id, signal, this.clock)));\n\t\t}\n\t\tif (adapters.behavior) {\n\t\t\tconst behaviorSignals = await adapters.behavior.pollBehavior(context, since, until);\n\t\t\tenvelopes.push(...behaviorSignals.map((signal) => behaviorToEnvelope(context.id, signal, this.clock)));\n\t\t}\n\t\treturn envelopes;\n\t}\n\tasync flushProposals(context, proposals) {\n\t\tfor (const proposal of proposals) {\n\t\t\tif (proposal.signalIds.length === 0) continue;\n\t\t\tawait this.options.sink.submit(context, proposal);\n\t\t\tif (proposals.length > 10) await delay(0);\n\t\t}\n\t}\n};\n\n//#endregion\nexport { RegeneratorService };"],"mappings":";AAMA,MAAM,yBAAyB,IAAI"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { __esmMin } from "./_virtual/rolldown_runtime.js";
|
|
2
|
+
|
|
3
|
+
//#region ../../libs/contracts/dist/registry-utils.js
|
|
4
|
+
/**
|
|
5
|
+
* Filter items by criteria.
|
|
6
|
+
* All criteria are combined with AND logic.
|
|
7
|
+
*/
|
|
8
|
+
function filterBy(items, filter) {
|
|
9
|
+
return items.filter((item) => {
|
|
10
|
+
if (filter.tags?.length) {
|
|
11
|
+
if (!filter.tags.some((tag) => item.meta.tags?.includes(tag))) return false;
|
|
12
|
+
}
|
|
13
|
+
if (filter.owners?.length) {
|
|
14
|
+
if (!filter.owners.some((owner) => item.meta.owners?.includes(owner))) return false;
|
|
15
|
+
}
|
|
16
|
+
if (filter.stability?.length) {
|
|
17
|
+
if (!filter.stability.includes(item.meta.stability ?? "stable")) return false;
|
|
18
|
+
}
|
|
19
|
+
if (filter.domain) {
|
|
20
|
+
if (GroupingStrategies.byDomain(item) !== filter.domain) return false;
|
|
21
|
+
}
|
|
22
|
+
if (filter.keyPattern) {
|
|
23
|
+
const name = item.meta.key ?? item.meta.key ?? "";
|
|
24
|
+
const pattern = filter.keyPattern.replace(/\*/g, ".*").replace(/\?/g, ".");
|
|
25
|
+
if (!new RegExp(`^${pattern}$`, "i").test(name)) return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Group items by key function.
|
|
32
|
+
*/
|
|
33
|
+
function groupBy(items, keyFn) {
|
|
34
|
+
const groups = /* @__PURE__ */ new Map();
|
|
35
|
+
for (const item of items) {
|
|
36
|
+
const key = keyFn(item);
|
|
37
|
+
const existing = groups.get(key);
|
|
38
|
+
if (existing) existing.push(item);
|
|
39
|
+
else groups.set(key, [item]);
|
|
40
|
+
}
|
|
41
|
+
return groups;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get unique tags from a collection of items.
|
|
45
|
+
*/
|
|
46
|
+
function getUniqueTags(items) {
|
|
47
|
+
const tags = /* @__PURE__ */ new Set();
|
|
48
|
+
for (const item of items) for (const tag of item.meta.tags ?? []) tags.add(tag);
|
|
49
|
+
return Array.from(tags).sort();
|
|
50
|
+
}
|
|
51
|
+
var GroupingStrategies;
|
|
52
|
+
var init_registry_utils = __esmMin(() => {
|
|
53
|
+
GroupingStrategies = {
|
|
54
|
+
byTag: (item) => item.meta.tags?.[0] ?? "untagged",
|
|
55
|
+
byAllTags: (item) => item.meta.tags?.length ? item.meta.tags : ["untagged"],
|
|
56
|
+
byOwner: (item) => item.meta.owners?.[0] ?? "unowned",
|
|
57
|
+
byDomain: (item) => {
|
|
58
|
+
return (item.meta.key ?? item.meta.key ?? "").split(".")[0] ?? "default";
|
|
59
|
+
},
|
|
60
|
+
byStability: (item) => item.meta.stability ?? "stable",
|
|
61
|
+
byUrlPath: (level) => (item) => {
|
|
62
|
+
if (!item.path) return "root";
|
|
63
|
+
return item.path.split("/").filter(Boolean).slice(0, level).join("/") || "root";
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
init_registry_utils();
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
export { GroupingStrategies, filterBy, getUniqueTags, groupBy, init_registry_utils };
|
|
71
|
+
//# sourceMappingURL=registry-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-utils.js","names":[],"sources":["../../../../../../libs/contracts/dist/registry-utils.js"],"sourcesContent":["import { __esmMin, __exportAll } from \"./_virtual/rolldown_runtime.js\";\n\n//#region src/registry-utils.ts\nvar registry_utils_exports = /* @__PURE__ */ __exportAll({\n\tGroupingStrategies: () => GroupingStrategies,\n\tfilterBy: () => filterBy,\n\tgetUniqueDomains: () => getUniqueDomains,\n\tgetUniqueOwners: () => getUniqueOwners,\n\tgetUniqueTags: () => getUniqueTags,\n\tgroupBy: () => groupBy,\n\tgroupByMultiple: () => groupByMultiple,\n\tgroupByToArray: () => groupByToArray\n});\n/**\n* Filter items by criteria.\n* All criteria are combined with AND logic.\n*/\nfunction filterBy(items, filter) {\n\treturn items.filter((item) => {\n\t\tif (filter.tags?.length) {\n\t\t\tif (!filter.tags.some((tag) => item.meta.tags?.includes(tag))) return false;\n\t\t}\n\t\tif (filter.owners?.length) {\n\t\t\tif (!filter.owners.some((owner) => item.meta.owners?.includes(owner))) return false;\n\t\t}\n\t\tif (filter.stability?.length) {\n\t\t\tif (!filter.stability.includes(item.meta.stability ?? \"stable\")) return false;\n\t\t}\n\t\tif (filter.domain) {\n\t\t\tif (GroupingStrategies.byDomain(item) !== filter.domain) return false;\n\t\t}\n\t\tif (filter.keyPattern) {\n\t\t\tconst name = item.meta.key ?? item.meta.key ?? \"\";\n\t\t\tconst pattern = filter.keyPattern.replace(/\\*/g, \".*\").replace(/\\?/g, \".\");\n\t\t\tif (!new RegExp(`^${pattern}$`, \"i\").test(name)) return false;\n\t\t}\n\t\treturn true;\n\t});\n}\n/**\n* Group items by key function.\n*/\nfunction groupBy(items, keyFn) {\n\tconst groups = /* @__PURE__ */ new Map();\n\tfor (const item of items) {\n\t\tconst key = keyFn(item);\n\t\tconst existing = groups.get(key);\n\t\tif (existing) existing.push(item);\n\t\telse groups.set(key, [item]);\n\t}\n\treturn groups;\n}\n/**\n* Group items by key function, returning array format.\n*/\nfunction groupByToArray(items, keyFn) {\n\tconst map = groupBy(items, keyFn);\n\treturn Array.from(map.entries()).map(([key, items$1]) => ({\n\t\tkey,\n\t\titems: items$1\n\t}));\n}\n/**\n* Group items where one item can belong to multiple groups.\n* Useful for byAllTags grouping.\n*/\nfunction groupByMultiple(items, keysFn) {\n\tconst groups = /* @__PURE__ */ new Map();\n\tfor (const item of items) {\n\t\tconst keys = keysFn(item);\n\t\tfor (const key of keys) {\n\t\t\tconst existing = groups.get(key);\n\t\t\tif (existing) existing.push(item);\n\t\t\telse groups.set(key, [item]);\n\t\t}\n\t}\n\treturn groups;\n}\n/**\n* Get unique tags from a collection of items.\n*/\nfunction getUniqueTags(items) {\n\tconst tags = /* @__PURE__ */ new Set();\n\tfor (const item of items) for (const tag of item.meta.tags ?? []) tags.add(tag);\n\treturn Array.from(tags).sort();\n}\n/**\n* Get unique owners from a collection of items.\n*/\nfunction getUniqueOwners(items) {\n\tconst owners = /* @__PURE__ */ new Set();\n\tfor (const item of items) for (const owner of item.meta.owners ?? []) owners.add(owner);\n\treturn Array.from(owners).sort();\n}\n/**\n* Get unique domains from a collection of items.\n*/\nfunction getUniqueDomains(items) {\n\tconst domains = /* @__PURE__ */ new Set();\n\tfor (const item of items) domains.add(GroupingStrategies.byDomain(item));\n\treturn Array.from(domains).sort();\n}\nvar GroupingStrategies;\nvar init_registry_utils = __esmMin(() => {\n\tGroupingStrategies = {\n\t\tbyTag: (item) => item.meta.tags?.[0] ?? \"untagged\",\n\t\tbyAllTags: (item) => item.meta.tags?.length ? item.meta.tags : [\"untagged\"],\n\t\tbyOwner: (item) => item.meta.owners?.[0] ?? \"unowned\",\n\t\tbyDomain: (item) => {\n\t\t\treturn (item.meta.key ?? item.meta.key ?? \"\").split(\".\")[0] ?? \"default\";\n\t\t},\n\t\tbyStability: (item) => item.meta.stability ?? \"stable\",\n\t\tbyUrlPath: (level) => (item) => {\n\t\t\tif (!item.path) return \"root\";\n\t\t\treturn item.path.split(\"/\").filter(Boolean).slice(0, level).join(\"/\") || \"root\";\n\t\t}\n\t};\n});\n\n//#endregion\ninit_registry_utils();\nexport { GroupingStrategies, filterBy, getUniqueDomains, getUniqueOwners, getUniqueTags, groupBy, groupByMultiple, groupByToArray, init_registry_utils, registry_utils_exports };"],"mappings":";;;;;;;AAiBA,SAAS,SAAS,OAAO,QAAQ;AAChC,QAAO,MAAM,QAAQ,SAAS;AAC7B,MAAI,OAAO,MAAM,QAChB;OAAI,CAAC,OAAO,KAAK,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,IAAI,CAAC,CAAE,QAAO;;AAEvE,MAAI,OAAO,QAAQ,QAClB;OAAI,CAAC,OAAO,OAAO,MAAM,UAAU,KAAK,KAAK,QAAQ,SAAS,MAAM,CAAC,CAAE,QAAO;;AAE/E,MAAI,OAAO,WAAW,QACrB;OAAI,CAAC,OAAO,UAAU,SAAS,KAAK,KAAK,aAAa,SAAS,CAAE,QAAO;;AAEzE,MAAI,OAAO,QACV;OAAI,mBAAmB,SAAS,KAAK,KAAK,OAAO,OAAQ,QAAO;;AAEjE,MAAI,OAAO,YAAY;GACtB,MAAM,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO;GAC/C,MAAM,UAAU,OAAO,WAAW,QAAQ,OAAO,KAAK,CAAC,QAAQ,OAAO,IAAI;AAC1E,OAAI,CAAC,IAAI,OAAO,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,CAAE,QAAO;;AAEzD,SAAO;GACN;;;;;AAKH,SAAS,QAAQ,OAAO,OAAO;CAC9B,MAAM,yBAAyB,IAAI,KAAK;AACxC,MAAK,MAAM,QAAQ,OAAO;EACzB,MAAM,MAAM,MAAM,KAAK;EACvB,MAAM,WAAW,OAAO,IAAI,IAAI;AAChC,MAAI,SAAU,UAAS,KAAK,KAAK;MAC5B,QAAO,IAAI,KAAK,CAAC,KAAK,CAAC;;AAE7B,QAAO;;;;;AA+BR,SAAS,cAAc,OAAO;CAC7B,MAAM,uBAAuB,IAAI,KAAK;AACtC,MAAK,MAAM,QAAQ,MAAO,MAAK,MAAM,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAE,MAAK,IAAI,IAAI;AAC/E,QAAO,MAAM,KAAK,KAAK,CAAC,MAAM;;AAkB/B,IAAI;AACJ,IAAI,sBAAsB,eAAe;AACxC,sBAAqB;EACpB,QAAQ,SAAS,KAAK,KAAK,OAAO,MAAM;EACxC,YAAY,SAAS,KAAK,KAAK,MAAM,SAAS,KAAK,KAAK,OAAO,CAAC,WAAW;EAC3E,UAAU,SAAS,KAAK,KAAK,SAAS,MAAM;EAC5C,WAAW,SAAS;AACnB,WAAQ,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,IAAI,MAAM,IAAI,CAAC,MAAM;;EAEhE,cAAc,SAAS,KAAK,KAAK,aAAa;EAC9C,YAAY,WAAW,SAAS;AAC/B,OAAI,CAAC,KAAK,KAAM,QAAO;AACvB,UAAO,KAAK,KAAK,MAAM,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI;;EAE1E;EACA;AAGF,qBAAqB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","names":[],"sources":["../../../../../../libs/contracts/dist/registry.js"],"sourcesContent":["import { filterBy, getUniqueTags, groupBy, init_registry_utils } from \"./registry-utils.js\";\nimport { compareVersions } from \"compare-versions\";\n\n//#region src/registry.ts\ninit_registry_utils();\nconst keyOfSpecContract = (spec) => `${spec.meta.key}.v${spec.meta.version}`;\n/** In-memory registry for PresentationSpec. */\nvar SpecContractRegistry = class {\n\titems = /* @__PURE__ */ new Map();\n\tconstructor(contractType, items) {\n\t\tthis.contractType = contractType;\n\t\tif (items) items.forEach((p) => this.register(p));\n\t}\n\tregister(p) {\n\t\tconst key = keyOfSpecContract(p);\n\t\tif (this.items.has(key)) throw new Error(`Duplicate contract \\`${this.contractType}\\` ${key}`);\n\t\tthis.items.set(key, p);\n\t\treturn this;\n\t}\n\tcount() {\n\t\treturn this.items.size;\n\t}\n\tlist() {\n\t\treturn [...this.items.values()];\n\t}\n\tget(key, version) {\n\t\tif (version != null) return this.items.get(`${key}.v${version}`);\n\t\tlet candidate;\n\t\tfor (const [k, p] of this.items.entries()) {\n\t\t\tif (!k.startsWith(`${key}.v`)) continue;\n\t\t\tif (!candidate || compareVersions(p.meta.version, candidate.meta.version) > 0) candidate = p;\n\t\t}\n\t\treturn candidate;\n\t}\n\thas(key, version) {\n\t\treturn !!this.get(key, version);\n\t}\n\t/** Filter presentations by criteria. */\n\tfilter(criteria) {\n\t\treturn filterBy(this.list(), criteria);\n\t}\n\t/** List presentations with specific tag. */\n\tlistByTag(tag) {\n\t\treturn this.list().filter((p) => p.meta.tags?.includes(tag));\n\t}\n\t/** List presentations by owner. */\n\tlistByOwner(owner) {\n\t\treturn this.list().filter((p) => p.meta.owners?.includes(owner));\n\t}\n\t/** Group presentations by key function. */\n\tgroupBy(keyFn) {\n\t\treturn groupBy(this.list(), keyFn);\n\t}\n\t/** Get unique tags from all presentations. */\n\tgetUniqueTags() {\n\t\treturn getUniqueTags(this.list());\n\t}\n};\n\n//#endregion\nexport { SpecContractRegistry, keyOfSpecContract };"],"mappings":";;;;AAIA,qBAAqB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "zod";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../schema/dist/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../../schema/dist/index.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "../../../schema/dist/index.js";
|
|
2
|
+
import "../jsonschema.js";
|
|
3
|
+
import "./contracts-adapter-input.js";
|
|
4
|
+
import "@pothos/plugin-prisma";
|
|
5
|
+
import "@pothos/plugin-complexity";
|
|
6
|
+
import "@pothos/plugin-relay";
|
|
7
|
+
import "@pothos/plugin-dataloader";
|
|
8
|
+
import "@pothos/plugin-tracing";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import z$1 from "zod";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../../jsonschema.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./mcp/createMcpServer.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./rest-generic.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./rest-generic.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../jsonschema.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./rest-generic.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./rest-generic.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "crypto";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { compareVersions } from "compare-versions";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./registry.js";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { registerDocBlocks } from "../docs/registry.js";
|
|
2
|
+
|
|
3
|
+
//#region ../../libs/contracts/dist/workflow/overview.docblock.js
|
|
4
|
+
const tech_workflows_overview_DocBlocks = [{
|
|
5
|
+
id: "docs.tech.workflows.overview",
|
|
6
|
+
title: "WorkflowSpec Overview",
|
|
7
|
+
summary: "WorkflowSpec provides a declarative, versioned format for long-running flows that mix automation and human review. Specs stay inside `@contractspec/lib.contracts` (`src/workflow/spec.ts`) so the same definition powers runtime execution, documentation, and future generation.",
|
|
8
|
+
kind: "reference",
|
|
9
|
+
visibility: "public",
|
|
10
|
+
route: "/docs/tech/workflows/overview",
|
|
11
|
+
tags: [
|
|
12
|
+
"tech",
|
|
13
|
+
"workflows",
|
|
14
|
+
"overview"
|
|
15
|
+
],
|
|
16
|
+
body: "# WorkflowSpec Overview\n\n## Purpose\n\nWorkflowSpec provides a declarative, versioned format for long-running flows that mix automation and human review. Specs stay inside `@contractspec/lib.contracts` (`src/workflow/spec.ts`) so the same definition powers runtime execution, documentation, and future generation.\n\n## Core Types\n\n- `WorkflowMeta`: ownership metadata (`title`, `domain`, `owners`, `tags`, `stability`) plus `name` and `version`.\n- `WorkflowDefinition`:\n - `entryStepId?`: optional explicit entry point (defaults to first step).\n - `steps[]`: ordered list of `Step` descriptors.\n - `transitions[]`: directed edges between steps with optional expressions.\n - `sla?`: aggregated timing hints for the overall flow or per-step budgets.\n - `compensation?`: fallback operations executed when a workflow is rolled back or fails.\n- `Step`:\n - `type`: `human`, `automation`, or `decision`.\n - `action`: references either a `ContractSpec` (`operation`) or `FormSpec` (`form`).\n - Optional `guard`, `timeoutMs`, and retry policy (`maxAttempts`, `backoff`, `delayMs`, `maxDelayMs?`).\n - `requiredIntegrations?`: integration slot ids that must be bound before the step may execute.\n - `requiredCapabilities?`: `CapabilityRef[]` that must be enabled in the resolved app config.\n- `Transition`: `from` → `to` with optional `condition` string (simple data expressions).\n\n## Registry & Validation\n\n- `WorkflowRegistry` (`src/workflow/spec.ts`) stores specs by key `<name>.v<version>` and exposes `register`, `list`, and `get`.\n- `validateWorkflowSpec()` (`src/workflow/validation.ts`) checks:\n - Duplicate step IDs.\n - Unknown `from`/`to` transitions.\n - Empty guards/conditions.\n - Reachability from the entry step.\n - Cycles in the graph.\n - Operation/Form references against provided registries.\n- `assertWorkflowSpecValid()` wraps validation and throws `WorkflowValidationError` when errors remain.\n\n## Runtime\n\n- `WorkflowRunner` (`src/workflow/runner.ts`) executes workflows and coordinates steps.\n - `start(name, version?, initialData?)` returns a `workflowId`.\n - `executeStep(workflowId, input?)` runs the current step (automation or human).\n - `getState(workflowId)` retrieves the latest state snapshot.\n - `cancel(workflowId)` marks the workflow as cancelled.\n - `preFlightCheck(name, version?, resolvedConfig?)` evaluates integration/capability requirements before the workflow starts.\n - Throws `WorkflowPreFlightError` if required integration slots are unbound or required capabilities are disabled.\n- `StateStore` (`src/workflow/state.ts`) abstracts persistence. V1 ships with:\n - `InMemoryStateStore` (`src/workflow/adapters/memory-store.ts`) for tests/dev.\n - Placeholder factories for file/database adapters (`adapters/file-adapter.ts`, `adapters/db-adapter.ts`).\n- Guard evaluation: expression guards run through `evaluateExpression()` (`src/workflow/expression.ts`); custom policy guards can be provided via `guardEvaluator`.\n- Events: the runner emits `workflow.started`, `workflow.step_completed`, `workflow.step_failed`, and `workflow.cancelled` through the optional `eventEmitter`.\n- React bindings (`@contractspec/lib.presentation-runtime-react`):\n - `useWorkflow` hook (polls state, exposes `executeStep`, `cancel`, `refresh`).\n - `WorkflowStepper` progress indicator using design-system Stepper.\n - `WorkflowStepRenderer` helper to render human/automation/decision steps with sensible fallbacks.\n\n## Authoring Checklist\n\n1. Reuse existing operations/forms; create new specs when missing.\n2. Prefer explicit `entryStepId` for clarity (especially with decision branches).\n3. Give automation steps an `operation` and human steps a `form` (warnings surface otherwise).\n4. Use short, meaningful step IDs (`submit`, `review`, `finalize`) to simplify analytics.\n5. Keep guard expressions deterministic; complex policy logic should move to PolicySpec (Phase 2).\n\n## Testing\n\n- Add unit tests for new workflows via `assertWorkflowSpecValid`.\n- Use the new Vitest suites (`validation.test.ts`, `expression.test.ts`, `runner.test.ts`) as examples.\n- CLI support will arrive in Phase 1 PR 3 (`contractspec create --type workflow`).\n\n## Tooling\n\n- `contractspec create --type workflow` scaffolds a WorkflowSpec with interactive prompts.\n- `contractspec build <spec.workflow.ts>` generates a runner scaffold (`.runner.ts`) wired to `WorkflowRunner` and the in-memory store.\n- `contractspec validate` understands `.workflow.ts` files and checks core structure (meta, steps, transitions).\n\n## Next Steps (Non-MVP)\n\n- Persistence adapters (database/file) for workflow state (Phase 2).\n- React bindings (`useWorkflow`, `WorkflowStepper`) and presentation-runtime integration (PR 3).\n- Policy engine integration (`guard.type === 'policy'` validated against PolicySpec).\n- Telemetry hooks for step execution metrics.\n\n"
|
|
17
|
+
}];
|
|
18
|
+
registerDocBlocks(tech_workflows_overview_DocBlocks);
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
//# sourceMappingURL=overview.docblock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overview.docblock.js","names":[],"sources":["../../../../../../../libs/contracts/dist/workflow/overview.docblock.js"],"sourcesContent":["import { registerDocBlocks } from \"../docs/registry.js\";\n\n//#region src/workflow/overview.docblock.ts\nconst tech_workflows_overview_DocBlocks = [{\n\tid: \"docs.tech.workflows.overview\",\n\ttitle: \"WorkflowSpec Overview\",\n\tsummary: \"WorkflowSpec provides a declarative, versioned format for long-running flows that mix automation and human review. Specs stay inside `@contractspec/lib.contracts` (`src/workflow/spec.ts`) so the same definition powers runtime execution, documentation, and future generation.\",\n\tkind: \"reference\",\n\tvisibility: \"public\",\n\troute: \"/docs/tech/workflows/overview\",\n\ttags: [\n\t\t\"tech\",\n\t\t\"workflows\",\n\t\t\"overview\"\n\t],\n\tbody: \"# WorkflowSpec Overview\\n\\n## Purpose\\n\\nWorkflowSpec provides a declarative, versioned format for long-running flows that mix automation and human review. Specs stay inside `@contractspec/lib.contracts` (`src/workflow/spec.ts`) so the same definition powers runtime execution, documentation, and future generation.\\n\\n## Core Types\\n\\n- `WorkflowMeta`: ownership metadata (`title`, `domain`, `owners`, `tags`, `stability`) plus `name` and `version`.\\n- `WorkflowDefinition`:\\n - `entryStepId?`: optional explicit entry point (defaults to first step).\\n - `steps[]`: ordered list of `Step` descriptors.\\n - `transitions[]`: directed edges between steps with optional expressions.\\n - `sla?`: aggregated timing hints for the overall flow or per-step budgets.\\n - `compensation?`: fallback operations executed when a workflow is rolled back or fails.\\n- `Step`:\\n - `type`: `human`, `automation`, or `decision`.\\n - `action`: references either a `ContractSpec` (`operation`) or `FormSpec` (`form`).\\n - Optional `guard`, `timeoutMs`, and retry policy (`maxAttempts`, `backoff`, `delayMs`, `maxDelayMs?`).\\n - `requiredIntegrations?`: integration slot ids that must be bound before the step may execute.\\n - `requiredCapabilities?`: `CapabilityRef[]` that must be enabled in the resolved app config.\\n- `Transition`: `from` → `to` with optional `condition` string (simple data expressions).\\n\\n## Registry & Validation\\n\\n- `WorkflowRegistry` (`src/workflow/spec.ts`) stores specs by key `<name>.v<version>` and exposes `register`, `list`, and `get`.\\n- `validateWorkflowSpec()` (`src/workflow/validation.ts`) checks:\\n - Duplicate step IDs.\\n - Unknown `from`/`to` transitions.\\n - Empty guards/conditions.\\n - Reachability from the entry step.\\n - Cycles in the graph.\\n - Operation/Form references against provided registries.\\n- `assertWorkflowSpecValid()` wraps validation and throws `WorkflowValidationError` when errors remain.\\n\\n## Runtime\\n\\n- `WorkflowRunner` (`src/workflow/runner.ts`) executes workflows and coordinates steps.\\n - `start(name, version?, initialData?)` returns a `workflowId`.\\n - `executeStep(workflowId, input?)` runs the current step (automation or human).\\n - `getState(workflowId)` retrieves the latest state snapshot.\\n - `cancel(workflowId)` marks the workflow as cancelled.\\n - `preFlightCheck(name, version?, resolvedConfig?)` evaluates integration/capability requirements before the workflow starts.\\n - Throws `WorkflowPreFlightError` if required integration slots are unbound or required capabilities are disabled.\\n- `StateStore` (`src/workflow/state.ts`) abstracts persistence. V1 ships with:\\n - `InMemoryStateStore` (`src/workflow/adapters/memory-store.ts`) for tests/dev.\\n - Placeholder factories for file/database adapters (`adapters/file-adapter.ts`, `adapters/db-adapter.ts`).\\n- Guard evaluation: expression guards run through `evaluateExpression()` (`src/workflow/expression.ts`); custom policy guards can be provided via `guardEvaluator`.\\n- Events: the runner emits `workflow.started`, `workflow.step_completed`, `workflow.step_failed`, and `workflow.cancelled` through the optional `eventEmitter`.\\n- React bindings (`@contractspec/lib.presentation-runtime-react`):\\n - `useWorkflow` hook (polls state, exposes `executeStep`, `cancel`, `refresh`).\\n - `WorkflowStepper` progress indicator using design-system Stepper.\\n - `WorkflowStepRenderer` helper to render human/automation/decision steps with sensible fallbacks.\\n\\n## Authoring Checklist\\n\\n1. Reuse existing operations/forms; create new specs when missing.\\n2. Prefer explicit `entryStepId` for clarity (especially with decision branches).\\n3. Give automation steps an `operation` and human steps a `form` (warnings surface otherwise).\\n4. Use short, meaningful step IDs (`submit`, `review`, `finalize`) to simplify analytics.\\n5. Keep guard expressions deterministic; complex policy logic should move to PolicySpec (Phase 2).\\n\\n## Testing\\n\\n- Add unit tests for new workflows via `assertWorkflowSpecValid`.\\n- Use the new Vitest suites (`validation.test.ts`, `expression.test.ts`, `runner.test.ts`) as examples.\\n- CLI support will arrive in Phase 1 PR 3 (`contractspec create --type workflow`).\\n\\n## Tooling\\n\\n- `contractspec create --type workflow` scaffolds a WorkflowSpec with interactive prompts.\\n- `contractspec build <spec.workflow.ts>` generates a runner scaffold (`.runner.ts`) wired to `WorkflowRunner` and the in-memory store.\\n- `contractspec validate` understands `.workflow.ts` files and checks core structure (meta, steps, transitions).\\n\\n## Next Steps (Non-MVP)\\n\\n- Persistence adapters (database/file) for workflow state (Phase 2).\\n- React bindings (`useWorkflow`, `WorkflowStepper`) and presentation-runtime integration (PR 3).\\n- Policy engine integration (`guard.type === 'policy'` validated against PolicySpec).\\n- Telemetry hooks for step execution metrics.\\n\\n\"\n}];\nregisterDocBlocks(tech_workflows_overview_DocBlocks);\n\n//#endregion\nexport { tech_workflows_overview_DocBlocks };"],"mappings":";;;AAGA,MAAM,oCAAoC,CAAC;CAC1C,IAAI;CACJ,OAAO;CACP,SAAS;CACT,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM;EACL;EACA;EACA;EACA;CACD,MAAM;CACN,CAAC;AACF,kBAAkB,kCAAkC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "node:crypto";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "../registry.js";
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import * as z$2 from "zod";
|
|
2
|
+
|
|
3
|
+
//#region ../../libs/contracts/dist/workspace-config/contractsrc-schema.js
|
|
4
|
+
/**
|
|
5
|
+
* ContractSpec configuration schema definitions.
|
|
6
|
+
*
|
|
7
|
+
* These schemas define the structure of .contractsrc.json files
|
|
8
|
+
* and are shared across CLI tools and libraries.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Schema output format for code generation.
|
|
12
|
+
* Controls how imported/generated schemas are written.
|
|
13
|
+
*/
|
|
14
|
+
const SchemaFormatSchema = z$2.enum([
|
|
15
|
+
"contractspec",
|
|
16
|
+
"zod",
|
|
17
|
+
"json-schema",
|
|
18
|
+
"graphql"
|
|
19
|
+
]);
|
|
20
|
+
/**
|
|
21
|
+
* OpenAPI source configuration for import/sync/validate operations.
|
|
22
|
+
*/
|
|
23
|
+
const OpenApiSourceConfigSchema = z$2.object({
|
|
24
|
+
name: z$2.string(),
|
|
25
|
+
url: z$2.url().optional(),
|
|
26
|
+
file: z$2.string().optional(),
|
|
27
|
+
syncMode: z$2.enum([
|
|
28
|
+
"import",
|
|
29
|
+
"sync",
|
|
30
|
+
"validate"
|
|
31
|
+
]).default("validate"),
|
|
32
|
+
tags: z$2.array(z$2.string()).optional(),
|
|
33
|
+
exclude: z$2.array(z$2.string()).optional(),
|
|
34
|
+
include: z$2.array(z$2.string()).optional(),
|
|
35
|
+
prefix: z$2.string().optional(),
|
|
36
|
+
defaultStability: z$2.enum([
|
|
37
|
+
"experimental",
|
|
38
|
+
"beta",
|
|
39
|
+
"stable",
|
|
40
|
+
"deprecated"
|
|
41
|
+
]).optional(),
|
|
42
|
+
defaultAuth: z$2.enum([
|
|
43
|
+
"anonymous",
|
|
44
|
+
"user",
|
|
45
|
+
"admin"
|
|
46
|
+
]).optional(),
|
|
47
|
+
defaultOwners: z$2.array(z$2.string()).optional(),
|
|
48
|
+
schemaFormat: SchemaFormatSchema.default("contractspec")
|
|
49
|
+
});
|
|
50
|
+
const OpenApiExportConfigSchema = z$2.object({
|
|
51
|
+
outputPath: z$2.string().default("./openapi.json"),
|
|
52
|
+
format: z$2.enum(["json", "yaml"]).default("json"),
|
|
53
|
+
title: z$2.string().optional(),
|
|
54
|
+
version: z$2.string().optional(),
|
|
55
|
+
description: z$2.string().optional(),
|
|
56
|
+
servers: z$2.array(z$2.object({
|
|
57
|
+
url: z$2.string(),
|
|
58
|
+
description: z$2.string().optional()
|
|
59
|
+
})).optional()
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* OpenAPI configuration section.
|
|
63
|
+
*/
|
|
64
|
+
const OpenApiConfigSchema = z$2.object({
|
|
65
|
+
sources: z$2.array(OpenApiSourceConfigSchema).optional(),
|
|
66
|
+
export: OpenApiExportConfigSchema.optional()
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Grouping strategy for organizing specs.
|
|
70
|
+
*/
|
|
71
|
+
const GroupingStrategySchema = z$2.enum([
|
|
72
|
+
"by-tag",
|
|
73
|
+
"by-owner",
|
|
74
|
+
"by-domain",
|
|
75
|
+
"by-url-path-single",
|
|
76
|
+
"by-url-path-multi",
|
|
77
|
+
"by-feature",
|
|
78
|
+
"none"
|
|
79
|
+
]);
|
|
80
|
+
/**
|
|
81
|
+
* Grouping rule configuration.
|
|
82
|
+
*/
|
|
83
|
+
const GroupingRuleSchema = z$2.object({
|
|
84
|
+
strategy: GroupingStrategySchema,
|
|
85
|
+
urlPathLevel: z$2.number().optional(),
|
|
86
|
+
pattern: z$2.string().optional()
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* Output directory conventions for generated specs.
|
|
90
|
+
*/
|
|
91
|
+
const FolderConventionsSchema = z$2.object({
|
|
92
|
+
models: z$2.string().default("models"),
|
|
93
|
+
operations: z$2.string().default("operations/commands|queries"),
|
|
94
|
+
events: z$2.string().default("events"),
|
|
95
|
+
presentations: z$2.string().default("presentations"),
|
|
96
|
+
forms: z$2.string().default("forms"),
|
|
97
|
+
groupByFeature: z$2.boolean().default(true),
|
|
98
|
+
operationsGrouping: GroupingRuleSchema.optional(),
|
|
99
|
+
modelsGrouping: GroupingRuleSchema.optional(),
|
|
100
|
+
eventsGrouping: GroupingRuleSchema.optional()
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* PR comment configuration for CI/CD.
|
|
104
|
+
*/
|
|
105
|
+
const PrCommentConfigSchema = z$2.object({
|
|
106
|
+
enabled: z$2.boolean().default(true),
|
|
107
|
+
template: z$2.enum(["minimal", "detailed"]).default("detailed"),
|
|
108
|
+
updateExisting: z$2.boolean().default(true)
|
|
109
|
+
});
|
|
110
|
+
/**
|
|
111
|
+
* GitHub check run configuration for CI/CD.
|
|
112
|
+
*/
|
|
113
|
+
const CheckRunConfigSchema = z$2.object({
|
|
114
|
+
enabled: z$2.boolean().default(true),
|
|
115
|
+
name: z$2.string().default("ContractSpec Impact"),
|
|
116
|
+
failOnBreaking: z$2.boolean().default(true),
|
|
117
|
+
failOnChanges: z$2.boolean().default(false)
|
|
118
|
+
});
|
|
119
|
+
/**
|
|
120
|
+
* Impact detection configuration for CI/CD.
|
|
121
|
+
*/
|
|
122
|
+
const ImpactConfigSchema = z$2.object({
|
|
123
|
+
baseline: z$2.string().default("default-branch"),
|
|
124
|
+
include: z$2.array(z$2.string()).optional(),
|
|
125
|
+
exclude: z$2.array(z$2.string()).optional()
|
|
126
|
+
});
|
|
127
|
+
/**
|
|
128
|
+
* CI/CD configuration section.
|
|
129
|
+
*/
|
|
130
|
+
const CiConfigSchema = z$2.object({
|
|
131
|
+
checks: z$2.array(z$2.string()).default([
|
|
132
|
+
"structure",
|
|
133
|
+
"integrity",
|
|
134
|
+
"deps"
|
|
135
|
+
]),
|
|
136
|
+
skipChecks: z$2.array(z$2.string()).optional(),
|
|
137
|
+
failOnWarnings: z$2.boolean().default(false),
|
|
138
|
+
uploadSarif: z$2.boolean().default(true),
|
|
139
|
+
prComment: PrCommentConfigSchema.optional(),
|
|
140
|
+
checkRun: CheckRunConfigSchema.optional(),
|
|
141
|
+
impact: ImpactConfigSchema.optional()
|
|
142
|
+
});
|
|
143
|
+
/**
|
|
144
|
+
* External workspace reference for cross-workspace dependencies in meta-repos.
|
|
145
|
+
*/
|
|
146
|
+
const ExternalWorkspaceSchema = z$2.object({
|
|
147
|
+
alias: z$2.string(),
|
|
148
|
+
submodule: z$2.string(),
|
|
149
|
+
packages: z$2.array(z$2.string()).optional(),
|
|
150
|
+
autoResolve: z$2.boolean().default(true)
|
|
151
|
+
});
|
|
152
|
+
/**
|
|
153
|
+
* Meta-repo configuration section.
|
|
154
|
+
*/
|
|
155
|
+
const MetaRepoConfigSchema = z$2.object({
|
|
156
|
+
activeScope: z$2.string().optional(),
|
|
157
|
+
externalWorkspaces: z$2.array(ExternalWorkspaceSchema).optional(),
|
|
158
|
+
crossWorkspaceSearch: z$2.boolean().default(false)
|
|
159
|
+
});
|
|
160
|
+
/**
|
|
161
|
+
* Supported formatter tools.
|
|
162
|
+
*/
|
|
163
|
+
const FormatterTypeSchema = z$2.enum([
|
|
164
|
+
"prettier",
|
|
165
|
+
"eslint",
|
|
166
|
+
"biome",
|
|
167
|
+
"dprint",
|
|
168
|
+
"custom"
|
|
169
|
+
]);
|
|
170
|
+
/**
|
|
171
|
+
* Formatter configuration for code generation.
|
|
172
|
+
*/
|
|
173
|
+
const FormatterConfigSchema = z$2.object({
|
|
174
|
+
enabled: z$2.boolean().default(true),
|
|
175
|
+
type: FormatterTypeSchema.optional(),
|
|
176
|
+
command: z$2.string().optional(),
|
|
177
|
+
args: z$2.array(z$2.string()).optional(),
|
|
178
|
+
timeout: z$2.number().default(3e4)
|
|
179
|
+
});
|
|
180
|
+
/**
|
|
181
|
+
* Rule severity levels (inspired by ESLint).
|
|
182
|
+
*/
|
|
183
|
+
const RuleSeveritySchema = z$2.enum([
|
|
184
|
+
"off",
|
|
185
|
+
"warn",
|
|
186
|
+
"error"
|
|
187
|
+
]);
|
|
188
|
+
/**
|
|
189
|
+
* Contract kinds for per-kind rule overrides.
|
|
190
|
+
*/
|
|
191
|
+
const SpecKindSchema = z$2.enum([
|
|
192
|
+
"operation",
|
|
193
|
+
"event",
|
|
194
|
+
"presentation",
|
|
195
|
+
"feature",
|
|
196
|
+
"workflow",
|
|
197
|
+
"data-view",
|
|
198
|
+
"migration",
|
|
199
|
+
"telemetry",
|
|
200
|
+
"experiment",
|
|
201
|
+
"app-config"
|
|
202
|
+
]);
|
|
203
|
+
/**
|
|
204
|
+
* Available lint rules with their severity.
|
|
205
|
+
*/
|
|
206
|
+
const LintRulesSchema = z$2.object({
|
|
207
|
+
"require-acceptance": RuleSeveritySchema.optional(),
|
|
208
|
+
"require-examples": RuleSeveritySchema.optional(),
|
|
209
|
+
"require-stability": RuleSeveritySchema.optional(),
|
|
210
|
+
"require-owners-format": RuleSeveritySchema.optional(),
|
|
211
|
+
"event-past-tense": RuleSeveritySchema.optional(),
|
|
212
|
+
"no-todo": RuleSeveritySchema.optional(),
|
|
213
|
+
"workflow-transitions": RuleSeveritySchema.optional(),
|
|
214
|
+
"telemetry-privacy": RuleSeveritySchema.optional(),
|
|
215
|
+
"experiment-allocation": RuleSeveritySchema.optional(),
|
|
216
|
+
"app-config-appid": RuleSeveritySchema.optional(),
|
|
217
|
+
"app-config-capabilities": RuleSeveritySchema.optional(),
|
|
218
|
+
"data-view-fields": RuleSeveritySchema.optional()
|
|
219
|
+
});
|
|
220
|
+
/**
|
|
221
|
+
* Full rules configuration with global defaults and per-kind overrides.
|
|
222
|
+
*/
|
|
223
|
+
const RulesConfigSchema = z$2.object({
|
|
224
|
+
defaults: LintRulesSchema.optional(),
|
|
225
|
+
overrides: z$2.record(SpecKindSchema, LintRulesSchema).optional()
|
|
226
|
+
});
|
|
227
|
+
/**
|
|
228
|
+
* Full ContractSpec configuration schema (.contractsrc.json).
|
|
229
|
+
*/
|
|
230
|
+
const ContractsrcSchema = z$2.object({
|
|
231
|
+
aiProvider: z$2.enum([
|
|
232
|
+
"claude",
|
|
233
|
+
"openai",
|
|
234
|
+
"ollama",
|
|
235
|
+
"custom"
|
|
236
|
+
]).default("claude"),
|
|
237
|
+
aiModel: z$2.string().optional(),
|
|
238
|
+
agentMode: z$2.enum([
|
|
239
|
+
"simple",
|
|
240
|
+
"cursor",
|
|
241
|
+
"claude-code",
|
|
242
|
+
"openai-codex"
|
|
243
|
+
]).default("simple"),
|
|
244
|
+
customEndpoint: z$2.url().nullable().optional(),
|
|
245
|
+
customApiKey: z$2.string().nullable().optional(),
|
|
246
|
+
outputDir: z$2.string().default("./src"),
|
|
247
|
+
conventions: FolderConventionsSchema,
|
|
248
|
+
defaultOwners: z$2.array(z$2.string()).default([]),
|
|
249
|
+
defaultTags: z$2.array(z$2.string()).default([]),
|
|
250
|
+
packages: z$2.array(z$2.string()).optional(),
|
|
251
|
+
excludePackages: z$2.array(z$2.string()).optional(),
|
|
252
|
+
recursive: z$2.boolean().optional(),
|
|
253
|
+
openapi: OpenApiConfigSchema.optional(),
|
|
254
|
+
ci: CiConfigSchema.optional(),
|
|
255
|
+
metaRepo: MetaRepoConfigSchema.optional(),
|
|
256
|
+
rules: RulesConfigSchema.optional(),
|
|
257
|
+
schemaFormat: SchemaFormatSchema.default("contractspec"),
|
|
258
|
+
formatter: FormatterConfigSchema.optional()
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
//#endregion
|
|
262
|
+
export { FolderConventionsSchema, FormatterConfigSchema, FormatterTypeSchema, OpenApiConfigSchema, OpenApiExportConfigSchema, OpenApiSourceConfigSchema, SchemaFormatSchema };
|
|
263
|
+
//# sourceMappingURL=contractsrc-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractsrc-schema.js","names":[],"sources":["../../../../../../../libs/contracts/dist/workspace-config/contractsrc-schema.js"],"sourcesContent":["import * as z$2 from \"zod\";\n\n//#region src/workspace-config/contractsrc-schema.ts\n/**\n* ContractSpec configuration schema definitions.\n*\n* These schemas define the structure of .contractsrc.json files\n* and are shared across CLI tools and libraries.\n*/\n/**\n* Schema output format for code generation.\n* Controls how imported/generated schemas are written.\n*/\nconst SchemaFormatSchema = z$2.enum([\n\t\"contractspec\",\n\t\"zod\",\n\t\"json-schema\",\n\t\"graphql\"\n]);\n/**\n* OpenAPI source configuration for import/sync/validate operations.\n*/\nconst OpenApiSourceConfigSchema = z$2.object({\n\tname: z$2.string(),\n\turl: z$2.url().optional(),\n\tfile: z$2.string().optional(),\n\tsyncMode: z$2.enum([\n\t\t\"import\",\n\t\t\"sync\",\n\t\t\"validate\"\n\t]).default(\"validate\"),\n\ttags: z$2.array(z$2.string()).optional(),\n\texclude: z$2.array(z$2.string()).optional(),\n\tinclude: z$2.array(z$2.string()).optional(),\n\tprefix: z$2.string().optional(),\n\tdefaultStability: z$2.enum([\n\t\t\"experimental\",\n\t\t\"beta\",\n\t\t\"stable\",\n\t\t\"deprecated\"\n\t]).optional(),\n\tdefaultAuth: z$2.enum([\n\t\t\"anonymous\",\n\t\t\"user\",\n\t\t\"admin\"\n\t]).optional(),\n\tdefaultOwners: z$2.array(z$2.string()).optional(),\n\tschemaFormat: SchemaFormatSchema.default(\"contractspec\")\n});\nconst OpenApiExportConfigSchema = z$2.object({\n\toutputPath: z$2.string().default(\"./openapi.json\"),\n\tformat: z$2.enum([\"json\", \"yaml\"]).default(\"json\"),\n\ttitle: z$2.string().optional(),\n\tversion: z$2.string().optional(),\n\tdescription: z$2.string().optional(),\n\tservers: z$2.array(z$2.object({\n\t\turl: z$2.string(),\n\t\tdescription: z$2.string().optional()\n\t})).optional()\n});\n/**\n* OpenAPI configuration section.\n*/\nconst OpenApiConfigSchema = z$2.object({\n\tsources: z$2.array(OpenApiSourceConfigSchema).optional(),\n\texport: OpenApiExportConfigSchema.optional()\n});\n/**\n* Grouping strategy for organizing specs.\n*/\nconst GroupingStrategySchema = z$2.enum([\n\t\"by-tag\",\n\t\"by-owner\",\n\t\"by-domain\",\n\t\"by-url-path-single\",\n\t\"by-url-path-multi\",\n\t\"by-feature\",\n\t\"none\"\n]);\n/**\n* Grouping rule configuration.\n*/\nconst GroupingRuleSchema = z$2.object({\n\tstrategy: GroupingStrategySchema,\n\turlPathLevel: z$2.number().optional(),\n\tpattern: z$2.string().optional()\n});\n/**\n* Output directory conventions for generated specs.\n*/\nconst FolderConventionsSchema = z$2.object({\n\tmodels: z$2.string().default(\"models\"),\n\toperations: z$2.string().default(\"operations/commands|queries\"),\n\tevents: z$2.string().default(\"events\"),\n\tpresentations: z$2.string().default(\"presentations\"),\n\tforms: z$2.string().default(\"forms\"),\n\tgroupByFeature: z$2.boolean().default(true),\n\toperationsGrouping: GroupingRuleSchema.optional(),\n\tmodelsGrouping: GroupingRuleSchema.optional(),\n\teventsGrouping: GroupingRuleSchema.optional()\n});\n/**\n* PR comment configuration for CI/CD.\n*/\nconst PrCommentConfigSchema = z$2.object({\n\tenabled: z$2.boolean().default(true),\n\ttemplate: z$2.enum([\"minimal\", \"detailed\"]).default(\"detailed\"),\n\tupdateExisting: z$2.boolean().default(true)\n});\n/**\n* GitHub check run configuration for CI/CD.\n*/\nconst CheckRunConfigSchema = z$2.object({\n\tenabled: z$2.boolean().default(true),\n\tname: z$2.string().default(\"ContractSpec Impact\"),\n\tfailOnBreaking: z$2.boolean().default(true),\n\tfailOnChanges: z$2.boolean().default(false)\n});\n/**\n* Impact detection configuration for CI/CD.\n*/\nconst ImpactConfigSchema = z$2.object({\n\tbaseline: z$2.string().default(\"default-branch\"),\n\tinclude: z$2.array(z$2.string()).optional(),\n\texclude: z$2.array(z$2.string()).optional()\n});\n/**\n* CI/CD configuration section.\n*/\nconst CiConfigSchema = z$2.object({\n\tchecks: z$2.array(z$2.string()).default([\n\t\t\"structure\",\n\t\t\"integrity\",\n\t\t\"deps\"\n\t]),\n\tskipChecks: z$2.array(z$2.string()).optional(),\n\tfailOnWarnings: z$2.boolean().default(false),\n\tuploadSarif: z$2.boolean().default(true),\n\tprComment: PrCommentConfigSchema.optional(),\n\tcheckRun: CheckRunConfigSchema.optional(),\n\timpact: ImpactConfigSchema.optional()\n});\n/**\n* External workspace reference for cross-workspace dependencies in meta-repos.\n*/\nconst ExternalWorkspaceSchema = z$2.object({\n\talias: z$2.string(),\n\tsubmodule: z$2.string(),\n\tpackages: z$2.array(z$2.string()).optional(),\n\tautoResolve: z$2.boolean().default(true)\n});\n/**\n* Meta-repo configuration section.\n*/\nconst MetaRepoConfigSchema = z$2.object({\n\tactiveScope: z$2.string().optional(),\n\texternalWorkspaces: z$2.array(ExternalWorkspaceSchema).optional(),\n\tcrossWorkspaceSearch: z$2.boolean().default(false)\n});\n/**\n* Supported formatter tools.\n*/\nconst FormatterTypeSchema = z$2.enum([\n\t\"prettier\",\n\t\"eslint\",\n\t\"biome\",\n\t\"dprint\",\n\t\"custom\"\n]);\n/**\n* Formatter configuration for code generation.\n*/\nconst FormatterConfigSchema = z$2.object({\n\tenabled: z$2.boolean().default(true),\n\ttype: FormatterTypeSchema.optional(),\n\tcommand: z$2.string().optional(),\n\targs: z$2.array(z$2.string()).optional(),\n\ttimeout: z$2.number().default(3e4)\n});\n/**\n* Rule severity levels (inspired by ESLint).\n*/\nconst RuleSeveritySchema = z$2.enum([\n\t\"off\",\n\t\"warn\",\n\t\"error\"\n]);\n/**\n* Contract kinds for per-kind rule overrides.\n*/\nconst SpecKindSchema = z$2.enum([\n\t\"operation\",\n\t\"event\",\n\t\"presentation\",\n\t\"feature\",\n\t\"workflow\",\n\t\"data-view\",\n\t\"migration\",\n\t\"telemetry\",\n\t\"experiment\",\n\t\"app-config\"\n]);\n/**\n* Available lint rules with their severity.\n*/\nconst LintRulesSchema = z$2.object({\n\t\"require-acceptance\": RuleSeveritySchema.optional(),\n\t\"require-examples\": RuleSeveritySchema.optional(),\n\t\"require-stability\": RuleSeveritySchema.optional(),\n\t\"require-owners-format\": RuleSeveritySchema.optional(),\n\t\"event-past-tense\": RuleSeveritySchema.optional(),\n\t\"no-todo\": RuleSeveritySchema.optional(),\n\t\"workflow-transitions\": RuleSeveritySchema.optional(),\n\t\"telemetry-privacy\": RuleSeveritySchema.optional(),\n\t\"experiment-allocation\": RuleSeveritySchema.optional(),\n\t\"app-config-appid\": RuleSeveritySchema.optional(),\n\t\"app-config-capabilities\": RuleSeveritySchema.optional(),\n\t\"data-view-fields\": RuleSeveritySchema.optional()\n});\n/**\n* Full rules configuration with global defaults and per-kind overrides.\n*/\nconst RulesConfigSchema = z$2.object({\n\tdefaults: LintRulesSchema.optional(),\n\toverrides: z$2.record(SpecKindSchema, LintRulesSchema).optional()\n});\n/**\n* Full ContractSpec configuration schema (.contractsrc.json).\n*/\nconst ContractsrcSchema = z$2.object({\n\taiProvider: z$2.enum([\n\t\t\"claude\",\n\t\t\"openai\",\n\t\t\"ollama\",\n\t\t\"custom\"\n\t]).default(\"claude\"),\n\taiModel: z$2.string().optional(),\n\tagentMode: z$2.enum([\n\t\t\"simple\",\n\t\t\"cursor\",\n\t\t\"claude-code\",\n\t\t\"openai-codex\"\n\t]).default(\"simple\"),\n\tcustomEndpoint: z$2.url().nullable().optional(),\n\tcustomApiKey: z$2.string().nullable().optional(),\n\toutputDir: z$2.string().default(\"./src\"),\n\tconventions: FolderConventionsSchema,\n\tdefaultOwners: z$2.array(z$2.string()).default([]),\n\tdefaultTags: z$2.array(z$2.string()).default([]),\n\tpackages: z$2.array(z$2.string()).optional(),\n\texcludePackages: z$2.array(z$2.string()).optional(),\n\trecursive: z$2.boolean().optional(),\n\topenapi: OpenApiConfigSchema.optional(),\n\tci: CiConfigSchema.optional(),\n\tmetaRepo: MetaRepoConfigSchema.optional(),\n\trules: RulesConfigSchema.optional(),\n\tschemaFormat: SchemaFormatSchema.default(\"contractspec\"),\n\tformatter: FormatterConfigSchema.optional()\n});\n/**\n* Default configuration values.\n*/\nconst DEFAULT_CONTRACTSRC = {\n\taiProvider: \"claude\",\n\tagentMode: \"simple\",\n\toutputDir: \"./src\",\n\tconventions: {\n\t\tmodels: \"models\",\n\t\toperations: \"interactions/commands|queries\",\n\t\tevents: \"events\",\n\t\tpresentations: \"presentations\",\n\t\tforms: \"forms\",\n\t\tgroupByFeature: true\n\t},\n\tdefaultOwners: [],\n\tdefaultTags: [],\n\tschemaFormat: \"contractspec\"\n};\n\n//#endregion\nexport { CheckRunConfigSchema, CiConfigSchema, ContractsrcSchema, DEFAULT_CONTRACTSRC, ExternalWorkspaceSchema, FolderConventionsSchema, FormatterConfigSchema, FormatterTypeSchema, GroupingRuleSchema, GroupingStrategySchema, ImpactConfigSchema, LintRulesSchema, MetaRepoConfigSchema, OpenApiConfigSchema, OpenApiExportConfigSchema, OpenApiSourceConfigSchema, PrCommentConfigSchema, RuleSeveritySchema, RulesConfigSchema, SchemaFormatSchema, SpecKindSchema };"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { FolderConventionsSchema, FormatterConfigSchema, FormatterTypeSchema, OpenApiConfigSchema, OpenApiExportConfigSchema, OpenApiSourceConfigSchema, SchemaFormatSchema } from "./contractsrc-schema.js";
|