@contractspec/module.examples 3.7.7 → 3.8.4

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/README.md CHANGED
@@ -9,6 +9,8 @@ Website: https://contractspec.io
9
9
  - **Layer**: module.
10
10
  - **Consumers**: apps (web-landing, docs), bundles (contractspec-studio).
11
11
  - Related ContractSpec packages include `@contractspec/example.agent-console`, `@contractspec/example.ai-chat-assistant`, `@contractspec/example.ai-support-bot`, `@contractspec/example.analytics-dashboard`, `@contractspec/example.calendar-google`, `@contractspec/example.content-generation`, ...
12
+ - `agent-console` is the default autonomous-agent showcase surfaced through `/sandbox`.
13
+ - `data-grid-showcase` is the focused ContractSpec table showcase surfaced through `/sandbox?template=data-grid-showcase`.
12
14
 
13
15
  ## Installation
14
16
 
@@ -63,3 +65,5 @@ Import the root entrypoint from `@contractspec/module.examples`, or choose a doc
63
65
  - This module is a thin aggregator -- business logic belongs in individual example packages under `packages/examples/`.
64
66
  - Adding a new example requires both creating the example package and wiring it as a dependency here.
65
67
  - Depends on ~30 example workspace packages; keep the dependency list in sync with `packages/examples/`.
68
+ - The meetup-ready autonomous-agent path is the deterministic `agent-console` sandbox plus its replay proof lane.
69
+ - The shared ContractSpec table stack is demonstrated directly by `data-grid-showcase` and reused in `analytics-dashboard`, `crm-pipeline`, `integration-hub`, and `agent-console`.
@@ -1,2 +1,2 @@
1
- import type { ExampleSpec } from "@contractspec/lib.contracts-spec/examples/types";
1
+ import type { ExampleSpec } from '@contractspec/lib.contracts-spec/examples/types';
2
2
  export declare const EXAMPLE_REGISTRY: readonly ExampleSpec[];
package/dist/index.js CHANGED
@@ -10,7 +10,9 @@ import AnalyticsDashboard from "@contractspec/example.analytics-dashboard/exampl
10
10
  import CalendarGoogle from "@contractspec/example.calendar-google/example";
11
11
  import ContentGeneration from "@contractspec/example.content-generation/example";
12
12
  import CrmPipeline from "@contractspec/example.crm-pipeline/example";
13
+ import DataGridShowcase from "@contractspec/example.data-grid-showcase/example";
13
14
  import EmailGmail from "@contractspec/example.email-gmail/example";
15
+ import HarnessLab from "@contractspec/example.harness-lab/example";
14
16
  import InAppDocs from "@contractspec/example.in-app-docs/example";
15
17
  import IntegrationHub from "@contractspec/example.integration-hub/example";
16
18
  import IntegrationPosthog from "@contractspec/example.integration-posthog/example";
@@ -35,7 +37,10 @@ import LifecycleDashboard from "@contractspec/example.lifecycle-dashboard/exampl
35
37
  import LocaleJurisdictionGate from "@contractspec/example.locale-jurisdiction-gate/example";
36
38
  import Marketplace from "@contractspec/example.marketplace/example";
37
39
  import MeetingRecorderProviders from "@contractspec/example.meeting-recorder-providers/example";
40
+ import MessagingAgentActions from "@contractspec/example.messaging-agent-actions/example";
41
+ import Minimal from "@contractspec/example.minimal/example";
38
42
  import OpenbankingPowens from "@contractspec/example.openbanking-powens/example";
43
+ import OpencodeCli from "@contractspec/example.opencode-cli/example";
39
44
  import Personalization from "@contractspec/example.personalization/example";
40
45
  import PocketFamilyOffice from "@contractspec/example.pocket-family-office/example";
41
46
  import PolicySafeKnowledgeAssistant from "@contractspec/example.policy-safe-knowledge-assistant/example";
@@ -48,6 +53,7 @@ import VersionedKnowledgeBase from "@contractspec/example.versioned-knowledge-ba
48
53
  import VideoApiShowcase from "@contractspec/example.video-api-showcase/example";
49
54
  import VideoDocsTerminal from "@contractspec/example.video-docs-terminal/example";
50
55
  import VideoMarketingClip from "@contractspec/example.video-marketing-clip/example";
56
+ import VisualizationShowcase from "@contractspec/example.visualization-showcase/example";
51
57
  import VoiceProviders from "@contractspec/example.voice-providers/example";
52
58
  import WealthSnapshot from "@contractspec/example.wealth-snapshot/example";
53
59
  import WorkflowSystem from "@contractspec/example.workflow-system/example";
@@ -59,7 +65,9 @@ var EXAMPLE_REGISTRY = [
59
65
  CalendarGoogle,
60
66
  ContentGeneration,
61
67
  CrmPipeline,
68
+ DataGridShowcase,
62
69
  EmailGmail,
70
+ HarnessLab,
63
71
  InAppDocs,
64
72
  IntegrationHub,
65
73
  IntegrationPosthog,
@@ -84,7 +92,10 @@ var EXAMPLE_REGISTRY = [
84
92
  LocaleJurisdictionGate,
85
93
  Marketplace,
86
94
  MeetingRecorderProviders,
95
+ MessagingAgentActions,
96
+ Minimal,
87
97
  OpenbankingPowens,
98
+ OpencodeCli,
88
99
  Personalization,
89
100
  PocketFamilyOffice,
90
101
  PolicySafeKnowledgeAssistant,
@@ -97,6 +108,7 @@ var EXAMPLE_REGISTRY = [
97
108
  VideoApiShowcase,
98
109
  VideoDocsTerminal,
99
110
  VideoMarketingClip,
111
+ VisualizationShowcase,
100
112
  VoiceProviders,
101
113
  WealthSnapshot,
102
114
  WorkflowSystem
@@ -123,7 +135,9 @@ import { ApolloProvider } from "@apollo/client/react";
123
135
  import { web as web2 } from "@contractspec/lib.runtime-sandbox";
124
136
  import { useEffect, useMemo, useState } from "react";
125
137
  import {
126
- createAgentHandlers
138
+ AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
139
+ createAgentConsoleDemoHandlers,
140
+ getAgentConsoleDashboardData
127
141
  } from "@contractspec/example.agent-console";
128
142
  import {
129
143
  createAnalyticsHandlers
@@ -186,6 +200,7 @@ import {
186
200
  saasBillingMarkdownRenderer,
187
201
  saasDashboardMarkdownRenderer
188
202
  } from "@contractspec/example.saas-boilerplate";
203
+ import { visualizationShowcaseMarkdownRenderer } from "@contractspec/example.visualization-showcase/ui/renderers";
189
204
  import {
190
205
  workflowDashboardMarkdownRenderer,
191
206
  workflowDefinitionListMarkdownRenderer,
@@ -195,7 +210,7 @@ import {
195
210
  createDefaultTransformEngine,
196
211
  registerBasicValidation,
197
212
  registerDefaultReactRenderer
198
- } from "@contractspec/lib.contracts-spec/presentations/transform-engine";
213
+ } from "@contractspec/lib.contracts-runtime-client-react/transform-engine";
199
214
  function createTemplateTransformEngine() {
200
215
  const engine = createDefaultTransformEngine();
201
216
  registerDefaultReactRenderer(engine);
@@ -228,6 +243,7 @@ function registerTemplateRenderers(engine) {
228
243
  engine.register(analyticsDashboardMarkdownRenderer);
229
244
  engine.register(dashboardListMarkdownRenderer);
230
245
  engine.register(queryBuilderMarkdownRenderer);
246
+ engine.register(visualizationShowcaseMarkdownRenderer);
231
247
  }
232
248
  var templateEngine = null;
233
249
  function getTemplateEngine() {
@@ -253,9 +269,9 @@ var PRESENTATIONS_BY_TEMPLATE = {
253
269
  "crm-pipeline": ["crm-pipeline.dashboard", "crm-pipeline.deal.pipeline"],
254
270
  "agent-console": [
255
271
  "agent-console.dashboard",
256
- "agent-console.agent.list",
272
+ "agent-console.agent.viewList",
257
273
  "agent-console.run.list",
258
- "agent-console.tool.registry"
274
+ "agent-console.tool.list"
259
275
  ],
260
276
  "workflow-system": [
261
277
  "workflow-system.dashboard",
@@ -265,8 +281,7 @@ var PRESENTATIONS_BY_TEMPLATE = {
265
281
  marketplace: [
266
282
  "marketplace.dashboard",
267
283
  "marketplace.product.catalog",
268
- "marketplace.order.list",
269
- "marketplace.store.manage"
284
+ "marketplace.order.list"
270
285
  ],
271
286
  "integration-hub": [
272
287
  "integration-hub.dashboard",
@@ -278,6 +293,7 @@ var PRESENTATIONS_BY_TEMPLATE = {
278
293
  "analytics-dashboard.list",
279
294
  "analytics-dashboard.query.builder"
280
295
  ],
296
+ "visualization-showcase": ["visualization-showcase.gallery"],
281
297
  "learning-journey-studio-onboarding": [
282
298
  "learning.journey.track_list",
283
299
  "learning.journey.track_detail",
@@ -309,6 +325,28 @@ var PRESENTATIONS_BY_TEMPLATE = {
309
325
  "learning.journey.progress_widget"
310
326
  ]
311
327
  };
328
+ var GENERATED_TEMPLATE_REGISTRY = listExamples().filter((example) => example.meta.key !== "agent-console").map((example) => {
329
+ const tags = [...example.meta.tags ?? []];
330
+ const category = tags.some((tag) => tag.toLowerCase() === "ai") || tags.some((tag) => tag.toLowerCase() === "assistant") ? "ai" : "business";
331
+ return {
332
+ id: example.meta.key,
333
+ name: example.meta.title ?? example.meta.key,
334
+ description: example.meta.description ?? "",
335
+ category,
336
+ complexity: "beginner",
337
+ icon: "\uD83D\uDCE6",
338
+ features: [],
339
+ tags,
340
+ schema: { models: [], contracts: [] },
341
+ components: { list: "ExampleList", detail: "ExampleDetail" },
342
+ preview: {
343
+ demoUrl: `/sandbox?template=${encodeURIComponent(example.meta.key)}`
344
+ },
345
+ package: example.entrypoints.packageName,
346
+ presentations: PRESENTATIONS_BY_TEMPLATE[example.meta.key] ?? [],
347
+ renderTargets: ["react", "markdown"]
348
+ };
349
+ });
312
350
  var TEMPLATE_REGISTRY = [
313
351
  {
314
352
  id: "todos-app",
@@ -395,30 +433,42 @@ var TEMPLATE_REGISTRY = [
395
433
  quickstart: "/docs/templates/recipe-app-i18n"
396
434
  }
397
435
  },
398
- ...listExamples().map((example) => {
399
- const tags = example.meta.keywords ?? [];
400
- const category = tags.some((t) => t.toLowerCase() === "ai") || tags.some((t) => t.toLowerCase() === "assistant") ? "ai" : "business";
401
- const complexity = "beginner";
402
- const icon = "\uD83D\uDCE6";
403
- return {
404
- id: example.meta.key,
405
- name: example.meta.title ?? example.meta.key,
406
- description: example.meta.description ?? "",
407
- category,
408
- complexity,
409
- icon,
410
- features: [],
411
- tags: [...tags],
412
- schema: { models: [], contracts: [] },
413
- components: { list: "ExampleList", detail: "ExampleDetail" },
414
- preview: {
415
- demoUrl: `/sandbox?template=${encodeURIComponent(example.meta.key)}`
416
- },
417
- package: example.entrypoints.packageName,
418
- presentations: PRESENTATIONS_BY_TEMPLATE[example.meta.key] ?? [],
419
- renderTargets: ["react", "markdown"]
420
- };
421
- })
436
+ {
437
+ id: "agent-console",
438
+ name: "Agent Console",
439
+ description: "Deterministic autonomous-agent walkthrough with seeded agents, tool registry, runs, metrics, and replayable proof.",
440
+ category: "ai",
441
+ complexity: "intermediate",
442
+ icon: "\uD83E\uDD16",
443
+ features: [
444
+ "Seeded autonomous agents",
445
+ "Tool registry",
446
+ "Run execution history",
447
+ "Metrics",
448
+ "Markdown and React views"
449
+ ],
450
+ tags: ["ai", "agents", "autonomous", "meetup", "sandbox"],
451
+ schema: {
452
+ models: ["Agent", "Tool", "Run"],
453
+ contracts: [
454
+ "agent-console.agent.list",
455
+ "agent-console.agent.create",
456
+ "agent-console.run.execute"
457
+ ]
458
+ },
459
+ components: {
460
+ list: "AgentListView",
461
+ detail: "RunListView",
462
+ form: "CreateAgentModal"
463
+ },
464
+ preview: {
465
+ demoUrl: "/sandbox?template=agent-console"
466
+ },
467
+ package: "@contractspec/example.agent-console",
468
+ presentations: PRESENTATIONS_BY_TEMPLATE["agent-console"] ?? [],
469
+ renderTargets: ["react", "markdown"]
470
+ },
471
+ ...GENERATED_TEMPLATE_REGISTRY
422
472
  ];
423
473
  function listTemplates(filter) {
424
474
  if (!filter)
@@ -598,6 +648,58 @@ function toBase64(bytes) {
598
648
  return btoa(binary);
599
649
  }
600
650
 
651
+ // src/runtime/presentations.ts
652
+ function createComponentPresentation(key, title, description, goal, context, componentKey) {
653
+ return {
654
+ meta: {
655
+ key,
656
+ version: "1.0.0",
657
+ title,
658
+ description,
659
+ stability: "experimental",
660
+ goal,
661
+ context,
662
+ owners: ["@contractspec/examples"],
663
+ tags: ["template", "sandbox"]
664
+ },
665
+ source: {
666
+ type: "component",
667
+ framework: "react",
668
+ componentKey
669
+ },
670
+ targets: ["react", "markdown"]
671
+ };
672
+ }
673
+ var TEMPLATE_PRESENTATIONS = {
674
+ "agent-console.dashboard": createComponentPresentation("agent-console.dashboard", "Agent Console Dashboard", "Operational dashboard for the agent console example.", "Review agent activity, throughput, and execution health.", "Sandbox presentation used for markdown previews.", "AgentConsoleDashboard"),
675
+ "agent-console.agent.list": createComponentPresentation("agent-console.agent.list", "Agent List", "List of seeded agents in the agent console example.", "Browse configured agents and their current capabilities.", "Sandbox presentation used for markdown previews.", "AgentListView"),
676
+ "agent-console.agent.viewList": createComponentPresentation("agent-console.agent.viewList", "Agent List", "List of seeded agents in the agent console example.", "Browse configured agents and their current capabilities.", "Sandbox presentation used for markdown previews.", "AgentListView"),
677
+ "agent-console.run.list": createComponentPresentation("agent-console.run.list", "Run List", "Execution history for the agent console example.", "Inspect recent runs and their outcomes.", "Sandbox presentation used for markdown previews.", "RunListView"),
678
+ "agent-console.tool.list": createComponentPresentation("agent-console.tool.list", "Tool Registry", "Available tools for the agent console example.", "Inspect the tool registry exposed to the seeded agents.", "Sandbox presentation used for markdown previews.", "ToolRegistryView"),
679
+ "agent-console.tool.registry": createComponentPresentation("agent-console.tool.registry", "Tool Registry", "Available tools for the agent console example.", "Inspect the tool registry exposed to the seeded agents.", "Sandbox presentation used for markdown previews.", "ToolRegistryView"),
680
+ "analytics-dashboard.dashboard": createComponentPresentation("analytics-dashboard.dashboard", "Analytics Dashboard", "Dashboard view for the analytics example.", "Review saved widgets and query-backed dashboards.", "Sandbox presentation used for markdown previews.", "AnalyticsDashboard"),
681
+ "analytics-dashboard.list": createComponentPresentation("analytics-dashboard.list", "Dashboard List", "List view for analytics dashboards.", "Browse dashboards available in the analytics example.", "Sandbox presentation used for markdown previews.", "DashboardList"),
682
+ "analytics-dashboard.query.builder": createComponentPresentation("analytics-dashboard.query.builder", "Query Builder", "Query authoring surface for the analytics example.", "Inspect reusable queries that power dashboards.", "Sandbox presentation used for markdown previews.", "QueryBuilder"),
683
+ "crm-pipeline.dashboard": createComponentPresentation("crm-pipeline.dashboard", "CRM Dashboard", "Dashboard for the CRM pipeline example.", "Track pipeline health and revenue progress.", "Sandbox presentation used for markdown previews.", "CrmDashboard"),
684
+ "crm-pipeline.deal.pipeline": createComponentPresentation("crm-pipeline.deal.pipeline", "Pipeline Kanban", "Pipeline board for the CRM pipeline example.", "Review deal flow across pipeline stages.", "Sandbox presentation used for markdown previews.", "PipelineKanbanView"),
685
+ "integration-hub.connection.list": createComponentPresentation("integration-hub.connection.list", "Connection List", "Connected systems in the integration hub example.", "Review connected systems and connection health.", "Sandbox presentation used for markdown previews.", "ConnectionList"),
686
+ "integration-hub.dashboard": createComponentPresentation("integration-hub.dashboard", "Integration Dashboard", "Operational dashboard for the integration hub example.", "Monitor integration mix, connection health, and sync issues.", "Sandbox presentation used for markdown previews.", "IntegrationDashboard"),
687
+ "integration-hub.sync.config": createComponentPresentation("integration-hub.sync.config", "Sync Configuration", "Sync configuration surface for the integration hub example.", "Inspect sync configuration and field mapping defaults.", "Sandbox presentation used for markdown previews.", "SyncConfigEditor"),
688
+ "marketplace.dashboard": createComponentPresentation("marketplace.dashboard", "Marketplace Dashboard", "Dashboard for the marketplace example.", "Review order flow, category mix, and revenue summaries.", "Sandbox presentation used for markdown previews.", "MarketplaceDashboard"),
689
+ "marketplace.order.list": createComponentPresentation("marketplace.order.list", "Order List", "Order list for the marketplace example.", "Inspect order activity and fulfillment state.", "Sandbox presentation used for markdown previews.", "OrderList"),
690
+ "marketplace.product.catalog": createComponentPresentation("marketplace.product.catalog", "Product Catalog", "Product catalog for the marketplace example.", "Browse the available products and merchandising data.", "Sandbox presentation used for markdown previews.", "ProductCatalog"),
691
+ "saas-boilerplate.billing.settings": createComponentPresentation("saas-boilerplate.billing.settings", "Billing Settings", "Subscription and usage settings for the SaaS example.", "Review billing configuration and current subscription data.", "Sandbox presentation used for markdown previews.", "SubscriptionView"),
692
+ "saas-boilerplate.dashboard": createComponentPresentation("saas-boilerplate.dashboard", "SaaS Dashboard", "Dashboard for the SaaS boilerplate example.", "Review account, project, and billing summaries.", "Sandbox presentation used for markdown previews.", "SaasDashboard"),
693
+ "saas-boilerplate.project.list": createComponentPresentation("saas-boilerplate.project.list", "Project List", "Project list for the SaaS boilerplate example.", "Browse projects and their current lifecycle state.", "Sandbox presentation used for markdown previews.", "ProjectListView"),
694
+ "visualization-showcase.gallery": createComponentPresentation("visualization-showcase.gallery", "Visualization Showcase", "Focused showcase of ContractSpec visualization primitives.", "Review the canonical visualization catalog and design-system wrappers.", "Sandbox presentation used for markdown previews.", "VisualizationShowcase"),
695
+ "workflow-system.dashboard": createComponentPresentation("workflow-system.dashboard", "Workflow Dashboard", "Dashboard for the workflow system example.", "Review workflow instance health and workload metrics.", "Sandbox presentation used for markdown previews.", "WorkflowDashboard"),
696
+ "workflow-system.definition.list": createComponentPresentation("workflow-system.definition.list", "Workflow Definition List", "Workflow definitions in the workflow system example.", "Browse available workflow definitions.", "Sandbox presentation used for markdown previews.", "WorkflowDefinitionList"),
697
+ "workflow-system.instance.detail": createComponentPresentation("workflow-system.instance.detail", "Workflow Instance Detail", "Workflow instance details in the workflow system example.", "Inspect the state and approvals for a workflow instance.", "Sandbox presentation used for markdown previews.", "WorkflowInstanceDetail")
698
+ };
699
+ function resolveTemplatePresentation(presentationName) {
700
+ return TEMPLATE_PRESENTATIONS[presentationName];
701
+ }
702
+
601
703
  // src/runtime/context.tsx
602
704
  import { jsxDEV } from "react/jsx-dev-runtime";
603
705
  "use client";
@@ -628,7 +730,7 @@ class TemplateHandlers {
628
730
  }
629
731
  function TemplateRuntimeProvider({
630
732
  templateId,
631
- projectId = "default-project",
733
+ projectId = "local-project",
632
734
  lazy = false,
633
735
  children
634
736
  }) {
@@ -653,7 +755,7 @@ function TemplateRuntimeProvider({
653
755
  const handlers = new TemplateHandlers;
654
756
  handlers.crm = createCrmHandlers(runtime.db);
655
757
  handlers.saas = createSaasHandlers(runtime.db);
656
- handlers.agent = createAgentHandlers(runtime.db);
758
+ handlers.agent = createAgentConsoleDemoHandlers({ projectId });
657
759
  handlers.workflow = createWorkflowHandlers(runtime.db);
658
760
  handlers.marketplace = createMarketplaceHandlers(runtime.db);
659
761
  handlers.integration = createIntegrationHandlers(runtime.db);
@@ -750,37 +852,19 @@ function TemplateRuntimeProvider({
750
852
  };
751
853
  }
752
854
  if (presentationName === "agent-console.dashboard") {
753
- const [agentsResult, runsResult, toolsResult] = await Promise.all([
754
- handlers.agent.listAgents({
755
- projectId,
756
- organizationId: "demo-org",
757
- limit: 10
758
- }),
759
- handlers.agent.listRuns({ projectId, limit: 10 }),
760
- handlers.agent.listTools({
761
- projectId,
762
- organizationId: "demo-org",
763
- limit: 10
764
- })
765
- ]);
855
+ const data = await getAgentConsoleDashboardData(handlers.agent, {
856
+ projectId,
857
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID
858
+ });
766
859
  return {
767
- data: {
768
- agents: agentsResult.items,
769
- runs: runsResult.items,
770
- tools: toolsResult.items,
771
- summary: {
772
- totalAgents: agentsResult.total,
773
- totalRuns: runsResult.total,
774
- totalTools: toolsResult.total
775
- }
776
- },
860
+ data,
777
861
  metadata: { timestamp: new Date, source: "agent-console" }
778
862
  };
779
863
  }
780
- if (presentationName === "agent-console.agent.list") {
864
+ if (presentationName === "agent-console.agent.viewList" || presentationName === "agent-console.agent.list") {
781
865
  const result = await handlers.agent.listAgents({
782
866
  projectId,
783
- organizationId: "demo-org",
867
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
784
868
  limit: 50
785
869
  });
786
870
  return {
@@ -806,10 +890,10 @@ function TemplateRuntimeProvider({
806
890
  }
807
891
  };
808
892
  }
809
- if (presentationName === "agent-console.tool.registry") {
893
+ if (presentationName === "agent-console.tool.list" || presentationName === "agent-console.tool.registry") {
810
894
  const result = await handlers.agent.listTools({
811
895
  projectId,
812
- organizationId: "demo-org",
896
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
813
897
  limit: 50
814
898
  });
815
899
  return {
@@ -821,6 +905,15 @@ function TemplateRuntimeProvider({
821
905
  }
822
906
  };
823
907
  }
908
+ if (presentationName === "visualization-showcase.gallery") {
909
+ return {
910
+ data: null,
911
+ metadata: {
912
+ timestamp: new Date,
913
+ source: "visualization-showcase"
914
+ }
915
+ };
916
+ }
824
917
  console.warn(`No data fetcher found for presentation: ${presentationName}`);
825
918
  return {
826
919
  data: null,
@@ -837,7 +930,8 @@ function TemplateRuntimeProvider({
837
930
  projectId,
838
931
  engine,
839
932
  handlers,
840
- fetchData
933
+ fetchData,
934
+ resolvePresentation: resolveTemplatePresentation
841
935
  });
842
936
  }
843
937
  } catch (err) {
@@ -9,7 +9,9 @@ import AnalyticsDashboard from "@contractspec/example.analytics-dashboard/exampl
9
9
  import CalendarGoogle from "@contractspec/example.calendar-google/example";
10
10
  import ContentGeneration from "@contractspec/example.content-generation/example";
11
11
  import CrmPipeline from "@contractspec/example.crm-pipeline/example";
12
+ import DataGridShowcase from "@contractspec/example.data-grid-showcase/example";
12
13
  import EmailGmail from "@contractspec/example.email-gmail/example";
14
+ import HarnessLab from "@contractspec/example.harness-lab/example";
13
15
  import InAppDocs from "@contractspec/example.in-app-docs/example";
14
16
  import IntegrationHub from "@contractspec/example.integration-hub/example";
15
17
  import IntegrationPosthog from "@contractspec/example.integration-posthog/example";
@@ -34,7 +36,10 @@ import LifecycleDashboard from "@contractspec/example.lifecycle-dashboard/exampl
34
36
  import LocaleJurisdictionGate from "@contractspec/example.locale-jurisdiction-gate/example";
35
37
  import Marketplace from "@contractspec/example.marketplace/example";
36
38
  import MeetingRecorderProviders from "@contractspec/example.meeting-recorder-providers/example";
39
+ import MessagingAgentActions from "@contractspec/example.messaging-agent-actions/example";
40
+ import Minimal from "@contractspec/example.minimal/example";
37
41
  import OpenbankingPowens from "@contractspec/example.openbanking-powens/example";
42
+ import OpencodeCli from "@contractspec/example.opencode-cli/example";
38
43
  import Personalization from "@contractspec/example.personalization/example";
39
44
  import PocketFamilyOffice from "@contractspec/example.pocket-family-office/example";
40
45
  import PolicySafeKnowledgeAssistant from "@contractspec/example.policy-safe-knowledge-assistant/example";
@@ -47,6 +52,7 @@ import VersionedKnowledgeBase from "@contractspec/example.versioned-knowledge-ba
47
52
  import VideoApiShowcase from "@contractspec/example.video-api-showcase/example";
48
53
  import VideoDocsTerminal from "@contractspec/example.video-docs-terminal/example";
49
54
  import VideoMarketingClip from "@contractspec/example.video-marketing-clip/example";
55
+ import VisualizationShowcase from "@contractspec/example.visualization-showcase/example";
50
56
  import VoiceProviders from "@contractspec/example.voice-providers/example";
51
57
  import WealthSnapshot from "@contractspec/example.wealth-snapshot/example";
52
58
  import WorkflowSystem from "@contractspec/example.workflow-system/example";
@@ -58,7 +64,9 @@ var EXAMPLE_REGISTRY = [
58
64
  CalendarGoogle,
59
65
  ContentGeneration,
60
66
  CrmPipeline,
67
+ DataGridShowcase,
61
68
  EmailGmail,
69
+ HarnessLab,
62
70
  InAppDocs,
63
71
  IntegrationHub,
64
72
  IntegrationPosthog,
@@ -83,7 +91,10 @@ var EXAMPLE_REGISTRY = [
83
91
  LocaleJurisdictionGate,
84
92
  Marketplace,
85
93
  MeetingRecorderProviders,
94
+ MessagingAgentActions,
95
+ Minimal,
86
96
  OpenbankingPowens,
97
+ OpencodeCli,
87
98
  Personalization,
88
99
  PocketFamilyOffice,
89
100
  PolicySafeKnowledgeAssistant,
@@ -96,6 +107,7 @@ var EXAMPLE_REGISTRY = [
96
107
  VideoApiShowcase,
97
108
  VideoDocsTerminal,
98
109
  VideoMarketingClip,
110
+ VisualizationShowcase,
99
111
  VoiceProviders,
100
112
  WealthSnapshot,
101
113
  WorkflowSystem
@@ -122,7 +134,9 @@ import { ApolloProvider } from "@apollo/client/react";
122
134
  import { web as web2 } from "@contractspec/lib.runtime-sandbox";
123
135
  import { useEffect, useMemo, useState } from "react";
124
136
  import {
125
- createAgentHandlers
137
+ AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
138
+ createAgentConsoleDemoHandlers,
139
+ getAgentConsoleDashboardData
126
140
  } from "@contractspec/example.agent-console";
127
141
  import {
128
142
  createAnalyticsHandlers
@@ -185,6 +199,7 @@ import {
185
199
  saasBillingMarkdownRenderer,
186
200
  saasDashboardMarkdownRenderer
187
201
  } from "@contractspec/example.saas-boilerplate";
202
+ import { visualizationShowcaseMarkdownRenderer } from "@contractspec/example.visualization-showcase/ui/renderers";
188
203
  import {
189
204
  workflowDashboardMarkdownRenderer,
190
205
  workflowDefinitionListMarkdownRenderer,
@@ -194,7 +209,7 @@ import {
194
209
  createDefaultTransformEngine,
195
210
  registerBasicValidation,
196
211
  registerDefaultReactRenderer
197
- } from "@contractspec/lib.contracts-spec/presentations/transform-engine";
212
+ } from "@contractspec/lib.contracts-runtime-client-react/transform-engine";
198
213
  function createTemplateTransformEngine() {
199
214
  const engine = createDefaultTransformEngine();
200
215
  registerDefaultReactRenderer(engine);
@@ -227,6 +242,7 @@ function registerTemplateRenderers(engine) {
227
242
  engine.register(analyticsDashboardMarkdownRenderer);
228
243
  engine.register(dashboardListMarkdownRenderer);
229
244
  engine.register(queryBuilderMarkdownRenderer);
245
+ engine.register(visualizationShowcaseMarkdownRenderer);
230
246
  }
231
247
  var templateEngine = null;
232
248
  function getTemplateEngine() {
@@ -252,9 +268,9 @@ var PRESENTATIONS_BY_TEMPLATE = {
252
268
  "crm-pipeline": ["crm-pipeline.dashboard", "crm-pipeline.deal.pipeline"],
253
269
  "agent-console": [
254
270
  "agent-console.dashboard",
255
- "agent-console.agent.list",
271
+ "agent-console.agent.viewList",
256
272
  "agent-console.run.list",
257
- "agent-console.tool.registry"
273
+ "agent-console.tool.list"
258
274
  ],
259
275
  "workflow-system": [
260
276
  "workflow-system.dashboard",
@@ -264,8 +280,7 @@ var PRESENTATIONS_BY_TEMPLATE = {
264
280
  marketplace: [
265
281
  "marketplace.dashboard",
266
282
  "marketplace.product.catalog",
267
- "marketplace.order.list",
268
- "marketplace.store.manage"
283
+ "marketplace.order.list"
269
284
  ],
270
285
  "integration-hub": [
271
286
  "integration-hub.dashboard",
@@ -277,6 +292,7 @@ var PRESENTATIONS_BY_TEMPLATE = {
277
292
  "analytics-dashboard.list",
278
293
  "analytics-dashboard.query.builder"
279
294
  ],
295
+ "visualization-showcase": ["visualization-showcase.gallery"],
280
296
  "learning-journey-studio-onboarding": [
281
297
  "learning.journey.track_list",
282
298
  "learning.journey.track_detail",
@@ -308,6 +324,28 @@ var PRESENTATIONS_BY_TEMPLATE = {
308
324
  "learning.journey.progress_widget"
309
325
  ]
310
326
  };
327
+ var GENERATED_TEMPLATE_REGISTRY = listExamples().filter((example) => example.meta.key !== "agent-console").map((example) => {
328
+ const tags = [...example.meta.tags ?? []];
329
+ const category = tags.some((tag) => tag.toLowerCase() === "ai") || tags.some((tag) => tag.toLowerCase() === "assistant") ? "ai" : "business";
330
+ return {
331
+ id: example.meta.key,
332
+ name: example.meta.title ?? example.meta.key,
333
+ description: example.meta.description ?? "",
334
+ category,
335
+ complexity: "beginner",
336
+ icon: "\uD83D\uDCE6",
337
+ features: [],
338
+ tags,
339
+ schema: { models: [], contracts: [] },
340
+ components: { list: "ExampleList", detail: "ExampleDetail" },
341
+ preview: {
342
+ demoUrl: `/sandbox?template=${encodeURIComponent(example.meta.key)}`
343
+ },
344
+ package: example.entrypoints.packageName,
345
+ presentations: PRESENTATIONS_BY_TEMPLATE[example.meta.key] ?? [],
346
+ renderTargets: ["react", "markdown"]
347
+ };
348
+ });
311
349
  var TEMPLATE_REGISTRY = [
312
350
  {
313
351
  id: "todos-app",
@@ -394,30 +432,42 @@ var TEMPLATE_REGISTRY = [
394
432
  quickstart: "/docs/templates/recipe-app-i18n"
395
433
  }
396
434
  },
397
- ...listExamples().map((example) => {
398
- const tags = example.meta.keywords ?? [];
399
- const category = tags.some((t) => t.toLowerCase() === "ai") || tags.some((t) => t.toLowerCase() === "assistant") ? "ai" : "business";
400
- const complexity = "beginner";
401
- const icon = "\uD83D\uDCE6";
402
- return {
403
- id: example.meta.key,
404
- name: example.meta.title ?? example.meta.key,
405
- description: example.meta.description ?? "",
406
- category,
407
- complexity,
408
- icon,
409
- features: [],
410
- tags: [...tags],
411
- schema: { models: [], contracts: [] },
412
- components: { list: "ExampleList", detail: "ExampleDetail" },
413
- preview: {
414
- demoUrl: `/sandbox?template=${encodeURIComponent(example.meta.key)}`
415
- },
416
- package: example.entrypoints.packageName,
417
- presentations: PRESENTATIONS_BY_TEMPLATE[example.meta.key] ?? [],
418
- renderTargets: ["react", "markdown"]
419
- };
420
- })
435
+ {
436
+ id: "agent-console",
437
+ name: "Agent Console",
438
+ description: "Deterministic autonomous-agent walkthrough with seeded agents, tool registry, runs, metrics, and replayable proof.",
439
+ category: "ai",
440
+ complexity: "intermediate",
441
+ icon: "\uD83E\uDD16",
442
+ features: [
443
+ "Seeded autonomous agents",
444
+ "Tool registry",
445
+ "Run execution history",
446
+ "Metrics",
447
+ "Markdown and React views"
448
+ ],
449
+ tags: ["ai", "agents", "autonomous", "meetup", "sandbox"],
450
+ schema: {
451
+ models: ["Agent", "Tool", "Run"],
452
+ contracts: [
453
+ "agent-console.agent.list",
454
+ "agent-console.agent.create",
455
+ "agent-console.run.execute"
456
+ ]
457
+ },
458
+ components: {
459
+ list: "AgentListView",
460
+ detail: "RunListView",
461
+ form: "CreateAgentModal"
462
+ },
463
+ preview: {
464
+ demoUrl: "/sandbox?template=agent-console"
465
+ },
466
+ package: "@contractspec/example.agent-console",
467
+ presentations: PRESENTATIONS_BY_TEMPLATE["agent-console"] ?? [],
468
+ renderTargets: ["react", "markdown"]
469
+ },
470
+ ...GENERATED_TEMPLATE_REGISTRY
421
471
  ];
422
472
  function listTemplates(filter) {
423
473
  if (!filter)
@@ -597,6 +647,58 @@ function toBase64(bytes) {
597
647
  return btoa(binary);
598
648
  }
599
649
 
650
+ // src/runtime/presentations.ts
651
+ function createComponentPresentation(key, title, description, goal, context, componentKey) {
652
+ return {
653
+ meta: {
654
+ key,
655
+ version: "1.0.0",
656
+ title,
657
+ description,
658
+ stability: "experimental",
659
+ goal,
660
+ context,
661
+ owners: ["@contractspec/examples"],
662
+ tags: ["template", "sandbox"]
663
+ },
664
+ source: {
665
+ type: "component",
666
+ framework: "react",
667
+ componentKey
668
+ },
669
+ targets: ["react", "markdown"]
670
+ };
671
+ }
672
+ var TEMPLATE_PRESENTATIONS = {
673
+ "agent-console.dashboard": createComponentPresentation("agent-console.dashboard", "Agent Console Dashboard", "Operational dashboard for the agent console example.", "Review agent activity, throughput, and execution health.", "Sandbox presentation used for markdown previews.", "AgentConsoleDashboard"),
674
+ "agent-console.agent.list": createComponentPresentation("agent-console.agent.list", "Agent List", "List of seeded agents in the agent console example.", "Browse configured agents and their current capabilities.", "Sandbox presentation used for markdown previews.", "AgentListView"),
675
+ "agent-console.agent.viewList": createComponentPresentation("agent-console.agent.viewList", "Agent List", "List of seeded agents in the agent console example.", "Browse configured agents and their current capabilities.", "Sandbox presentation used for markdown previews.", "AgentListView"),
676
+ "agent-console.run.list": createComponentPresentation("agent-console.run.list", "Run List", "Execution history for the agent console example.", "Inspect recent runs and their outcomes.", "Sandbox presentation used for markdown previews.", "RunListView"),
677
+ "agent-console.tool.list": createComponentPresentation("agent-console.tool.list", "Tool Registry", "Available tools for the agent console example.", "Inspect the tool registry exposed to the seeded agents.", "Sandbox presentation used for markdown previews.", "ToolRegistryView"),
678
+ "agent-console.tool.registry": createComponentPresentation("agent-console.tool.registry", "Tool Registry", "Available tools for the agent console example.", "Inspect the tool registry exposed to the seeded agents.", "Sandbox presentation used for markdown previews.", "ToolRegistryView"),
679
+ "analytics-dashboard.dashboard": createComponentPresentation("analytics-dashboard.dashboard", "Analytics Dashboard", "Dashboard view for the analytics example.", "Review saved widgets and query-backed dashboards.", "Sandbox presentation used for markdown previews.", "AnalyticsDashboard"),
680
+ "analytics-dashboard.list": createComponentPresentation("analytics-dashboard.list", "Dashboard List", "List view for analytics dashboards.", "Browse dashboards available in the analytics example.", "Sandbox presentation used for markdown previews.", "DashboardList"),
681
+ "analytics-dashboard.query.builder": createComponentPresentation("analytics-dashboard.query.builder", "Query Builder", "Query authoring surface for the analytics example.", "Inspect reusable queries that power dashboards.", "Sandbox presentation used for markdown previews.", "QueryBuilder"),
682
+ "crm-pipeline.dashboard": createComponentPresentation("crm-pipeline.dashboard", "CRM Dashboard", "Dashboard for the CRM pipeline example.", "Track pipeline health and revenue progress.", "Sandbox presentation used for markdown previews.", "CrmDashboard"),
683
+ "crm-pipeline.deal.pipeline": createComponentPresentation("crm-pipeline.deal.pipeline", "Pipeline Kanban", "Pipeline board for the CRM pipeline example.", "Review deal flow across pipeline stages.", "Sandbox presentation used for markdown previews.", "PipelineKanbanView"),
684
+ "integration-hub.connection.list": createComponentPresentation("integration-hub.connection.list", "Connection List", "Connected systems in the integration hub example.", "Review connected systems and connection health.", "Sandbox presentation used for markdown previews.", "ConnectionList"),
685
+ "integration-hub.dashboard": createComponentPresentation("integration-hub.dashboard", "Integration Dashboard", "Operational dashboard for the integration hub example.", "Monitor integration mix, connection health, and sync issues.", "Sandbox presentation used for markdown previews.", "IntegrationDashboard"),
686
+ "integration-hub.sync.config": createComponentPresentation("integration-hub.sync.config", "Sync Configuration", "Sync configuration surface for the integration hub example.", "Inspect sync configuration and field mapping defaults.", "Sandbox presentation used for markdown previews.", "SyncConfigEditor"),
687
+ "marketplace.dashboard": createComponentPresentation("marketplace.dashboard", "Marketplace Dashboard", "Dashboard for the marketplace example.", "Review order flow, category mix, and revenue summaries.", "Sandbox presentation used for markdown previews.", "MarketplaceDashboard"),
688
+ "marketplace.order.list": createComponentPresentation("marketplace.order.list", "Order List", "Order list for the marketplace example.", "Inspect order activity and fulfillment state.", "Sandbox presentation used for markdown previews.", "OrderList"),
689
+ "marketplace.product.catalog": createComponentPresentation("marketplace.product.catalog", "Product Catalog", "Product catalog for the marketplace example.", "Browse the available products and merchandising data.", "Sandbox presentation used for markdown previews.", "ProductCatalog"),
690
+ "saas-boilerplate.billing.settings": createComponentPresentation("saas-boilerplate.billing.settings", "Billing Settings", "Subscription and usage settings for the SaaS example.", "Review billing configuration and current subscription data.", "Sandbox presentation used for markdown previews.", "SubscriptionView"),
691
+ "saas-boilerplate.dashboard": createComponentPresentation("saas-boilerplate.dashboard", "SaaS Dashboard", "Dashboard for the SaaS boilerplate example.", "Review account, project, and billing summaries.", "Sandbox presentation used for markdown previews.", "SaasDashboard"),
692
+ "saas-boilerplate.project.list": createComponentPresentation("saas-boilerplate.project.list", "Project List", "Project list for the SaaS boilerplate example.", "Browse projects and their current lifecycle state.", "Sandbox presentation used for markdown previews.", "ProjectListView"),
693
+ "visualization-showcase.gallery": createComponentPresentation("visualization-showcase.gallery", "Visualization Showcase", "Focused showcase of ContractSpec visualization primitives.", "Review the canonical visualization catalog and design-system wrappers.", "Sandbox presentation used for markdown previews.", "VisualizationShowcase"),
694
+ "workflow-system.dashboard": createComponentPresentation("workflow-system.dashboard", "Workflow Dashboard", "Dashboard for the workflow system example.", "Review workflow instance health and workload metrics.", "Sandbox presentation used for markdown previews.", "WorkflowDashboard"),
695
+ "workflow-system.definition.list": createComponentPresentation("workflow-system.definition.list", "Workflow Definition List", "Workflow definitions in the workflow system example.", "Browse available workflow definitions.", "Sandbox presentation used for markdown previews.", "WorkflowDefinitionList"),
696
+ "workflow-system.instance.detail": createComponentPresentation("workflow-system.instance.detail", "Workflow Instance Detail", "Workflow instance details in the workflow system example.", "Inspect the state and approvals for a workflow instance.", "Sandbox presentation used for markdown previews.", "WorkflowInstanceDetail")
697
+ };
698
+ function resolveTemplatePresentation(presentationName) {
699
+ return TEMPLATE_PRESENTATIONS[presentationName];
700
+ }
701
+
600
702
  // src/runtime/context.tsx
601
703
  import { jsxDEV } from "react/jsx-dev-runtime";
602
704
  "use client";
@@ -627,7 +729,7 @@ class TemplateHandlers {
627
729
  }
628
730
  function TemplateRuntimeProvider({
629
731
  templateId,
630
- projectId = "default-project",
732
+ projectId = "local-project",
631
733
  lazy = false,
632
734
  children
633
735
  }) {
@@ -652,7 +754,7 @@ function TemplateRuntimeProvider({
652
754
  const handlers = new TemplateHandlers;
653
755
  handlers.crm = createCrmHandlers(runtime.db);
654
756
  handlers.saas = createSaasHandlers(runtime.db);
655
- handlers.agent = createAgentHandlers(runtime.db);
757
+ handlers.agent = createAgentConsoleDemoHandlers({ projectId });
656
758
  handlers.workflow = createWorkflowHandlers(runtime.db);
657
759
  handlers.marketplace = createMarketplaceHandlers(runtime.db);
658
760
  handlers.integration = createIntegrationHandlers(runtime.db);
@@ -749,37 +851,19 @@ function TemplateRuntimeProvider({
749
851
  };
750
852
  }
751
853
  if (presentationName === "agent-console.dashboard") {
752
- const [agentsResult, runsResult, toolsResult] = await Promise.all([
753
- handlers.agent.listAgents({
754
- projectId,
755
- organizationId: "demo-org",
756
- limit: 10
757
- }),
758
- handlers.agent.listRuns({ projectId, limit: 10 }),
759
- handlers.agent.listTools({
760
- projectId,
761
- organizationId: "demo-org",
762
- limit: 10
763
- })
764
- ]);
854
+ const data = await getAgentConsoleDashboardData(handlers.agent, {
855
+ projectId,
856
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID
857
+ });
765
858
  return {
766
- data: {
767
- agents: agentsResult.items,
768
- runs: runsResult.items,
769
- tools: toolsResult.items,
770
- summary: {
771
- totalAgents: agentsResult.total,
772
- totalRuns: runsResult.total,
773
- totalTools: toolsResult.total
774
- }
775
- },
859
+ data,
776
860
  metadata: { timestamp: new Date, source: "agent-console" }
777
861
  };
778
862
  }
779
- if (presentationName === "agent-console.agent.list") {
863
+ if (presentationName === "agent-console.agent.viewList" || presentationName === "agent-console.agent.list") {
780
864
  const result = await handlers.agent.listAgents({
781
865
  projectId,
782
- organizationId: "demo-org",
866
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
783
867
  limit: 50
784
868
  });
785
869
  return {
@@ -805,10 +889,10 @@ function TemplateRuntimeProvider({
805
889
  }
806
890
  };
807
891
  }
808
- if (presentationName === "agent-console.tool.registry") {
892
+ if (presentationName === "agent-console.tool.list" || presentationName === "agent-console.tool.registry") {
809
893
  const result = await handlers.agent.listTools({
810
894
  projectId,
811
- organizationId: "demo-org",
895
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
812
896
  limit: 50
813
897
  });
814
898
  return {
@@ -820,6 +904,15 @@ function TemplateRuntimeProvider({
820
904
  }
821
905
  };
822
906
  }
907
+ if (presentationName === "visualization-showcase.gallery") {
908
+ return {
909
+ data: null,
910
+ metadata: {
911
+ timestamp: new Date,
912
+ source: "visualization-showcase"
913
+ }
914
+ };
915
+ }
823
916
  console.warn(`No data fetcher found for presentation: ${presentationName}`);
824
917
  return {
825
918
  data: null,
@@ -836,7 +929,8 @@ function TemplateRuntimeProvider({
836
929
  projectId,
837
930
  engine,
838
931
  handlers,
839
- fetchData
932
+ fetchData,
933
+ resolvePresentation: resolveTemplatePresentation
840
934
  });
841
935
  }
842
936
  } catch (err) {
@@ -7,8 +7,8 @@ import { type MarketplaceHandlers } from '@contractspec/example.marketplace';
7
7
  import { type PolicySafeKnowledgeAssistantHandlers } from '@contractspec/example.policy-safe-knowledge-assistant';
8
8
  import { type SaasHandlers } from '@contractspec/example.saas-boilerplate';
9
9
  import { type WorkflowHandlers } from '@contractspec/example.workflow-system';
10
- import type { TransformEngine } from '@contractspec/lib.contracts-spec/presentations/transform-engine';
11
10
  import { type TemplateRuntimeProviderProps } from '@contractspec/lib.example-shared-ui';
11
+ import type { TransformEngine } from '@contractspec/lib.presentation-runtime-core/transform-engine';
12
12
  /**
13
13
  * Template-specific handlers created from the runtime database
14
14
  */
@@ -4,7 +4,7 @@
4
4
  * Creates and configures a TransformEngine instance with all template-specific
5
5
  * renderers for React and Markdown targets.
6
6
  */
7
- import { type TransformEngine } from '@contractspec/lib.contracts-spec/presentations/transform-engine';
7
+ import { type TransformEngine } from '@contractspec/lib.contracts-runtime-client-react/transform-engine';
8
8
  /**
9
9
  * Create a TransformEngine configured for template rendering
10
10
  */
@@ -0,0 +1,2 @@
1
+ import type { PresentationSpec } from '@contractspec/lib.contracts-spec/presentations';
2
+ export declare function resolveTemplatePresentation(presentationName: string): PresentationSpec | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contractspec/module.examples",
3
- "version": "3.7.7",
3
+ "version": "3.8.4",
4
4
  "description": "Example contract specifications collection",
5
5
  "keywords": [
6
6
  "contractspec",
@@ -33,63 +33,70 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@apollo/client": "^4.1.6",
36
- "@contractspec/example.agent-console": "3.7.7",
37
- "@contractspec/example.ai-chat-assistant": "3.7.7",
38
- "@contractspec/example.ai-support-bot": "3.7.7",
39
- "@contractspec/example.analytics-dashboard": "3.8.0",
40
- "@contractspec/example.calendar-google": "3.7.7",
41
- "@contractspec/example.content-generation": "3.7.7",
42
- "@contractspec/example.crm-pipeline": "3.7.7",
43
- "@contractspec/example.email-gmail": "3.7.7",
44
- "@contractspec/example.in-app-docs": "3.7.7",
45
- "@contractspec/example.integration-hub": "3.7.7",
46
- "@contractspec/example.integration-posthog": "3.7.7",
47
- "@contractspec/example.integration-stripe": "3.7.7",
48
- "@contractspec/example.integration-supabase": "3.7.7",
49
- "@contractspec/example.voice-providers": "3.7.7",
50
- "@contractspec/example.kb-update-pipeline": "3.7.7",
51
- "@contractspec/example.knowledge-canon": "3.7.7",
52
- "@contractspec/example.learning-journey-ambient-coach": "3.7.7",
53
- "@contractspec/example.learning-journey-crm-onboarding": "3.7.7",
54
- "@contractspec/example.learning-journey-duo-drills": "3.7.7",
55
- "@contractspec/example.learning-journey-platform-tour": "3.7.7",
56
- "@contractspec/example.learning-journey-quest-challenges": "3.7.7",
57
- "@contractspec/example.learning-journey-registry": "3.7.7",
58
- "@contractspec/example.learning-journey-studio-onboarding": "3.7.7",
59
- "@contractspec/example.learning-journey-ui-coaching": "3.7.7",
60
- "@contractspec/example.learning-journey-ui-gamified": "3.7.7",
61
- "@contractspec/example.learning-journey-ui-onboarding": "3.7.7",
62
- "@contractspec/example.learning-journey-ui-shared": "3.7.7",
63
- "@contractspec/example.learning-patterns": "3.7.7",
64
- "@contractspec/example.lifecycle-cli": "3.7.7",
65
- "@contractspec/example.lifecycle-dashboard": "3.7.7",
66
- "@contractspec/example.locale-jurisdiction-gate": "3.7.7",
67
- "@contractspec/example.marketplace": "3.7.7",
68
- "@contractspec/example.meeting-recorder-providers": "3.7.7",
69
- "@contractspec/example.openbanking-powens": "3.7.7",
70
- "@contractspec/example.personalization": "3.7.7",
71
- "@contractspec/example.pocket-family-office": "3.7.7",
72
- "@contractspec/example.policy-safe-knowledge-assistant": "3.7.7",
73
- "@contractspec/example.product-intent": "3.7.7",
74
- "@contractspec/example.project-management-sync": "3.7.7",
75
- "@contractspec/example.saas-boilerplate": "3.7.7",
76
- "@contractspec/example.service-business-os": "3.7.7",
77
- "@contractspec/example.team-hub": "3.7.7",
78
- "@contractspec/example.versioned-knowledge-base": "3.7.7",
79
- "@contractspec/example.video-api-showcase": "3.7.7",
80
- "@contractspec/example.video-docs-terminal": "3.7.7",
81
- "@contractspec/example.video-marketing-clip": "3.7.7",
82
- "@contractspec/example.wealth-snapshot": "3.7.7",
83
- "@contractspec/example.workflow-system": "3.7.7",
84
- "@contractspec/lib.contracts-spec": "4.0.0",
85
- "@contractspec/lib.example-shared-ui": "6.0.7",
86
- "@contractspec/lib.runtime-sandbox": "2.7.6",
87
- "zod": "^4.3.5"
36
+ "@contractspec/example.agent-console": "3.8.4",
37
+ "@contractspec/example.ai-chat-assistant": "3.8.4",
38
+ "@contractspec/example.ai-support-bot": "3.7.12",
39
+ "@contractspec/example.analytics-dashboard": "3.9.4",
40
+ "@contractspec/example.calendar-google": "3.7.12",
41
+ "@contractspec/example.content-generation": "3.7.12",
42
+ "@contractspec/example.crm-pipeline": "3.7.12",
43
+ "@contractspec/example.data-grid-showcase": "3.8.4",
44
+ "@contractspec/example.email-gmail": "3.7.12",
45
+ "@contractspec/example.in-app-docs": "3.7.12",
46
+ "@contractspec/example.integration-hub": "3.8.4",
47
+ "@contractspec/example.integration-posthog": "3.7.12",
48
+ "@contractspec/example.integration-stripe": "3.7.12",
49
+ "@contractspec/example.integration-supabase": "3.7.12",
50
+ "@contractspec/example.voice-providers": "3.7.12",
51
+ "@contractspec/example.kb-update-pipeline": "3.7.12",
52
+ "@contractspec/example.knowledge-canon": "3.7.12",
53
+ "@contractspec/example.learning-journey-ambient-coach": "3.7.12",
54
+ "@contractspec/example.learning-journey-crm-onboarding": "3.7.12",
55
+ "@contractspec/example.learning-journey-duo-drills": "3.7.12",
56
+ "@contractspec/example.learning-journey-platform-tour": "3.7.12",
57
+ "@contractspec/example.learning-journey-quest-challenges": "3.7.12",
58
+ "@contractspec/example.learning-journey-registry": "3.7.12",
59
+ "@contractspec/example.learning-journey-studio-onboarding": "3.7.12",
60
+ "@contractspec/example.learning-journey-ui-coaching": "3.7.12",
61
+ "@contractspec/example.learning-journey-ui-gamified": "3.7.12",
62
+ "@contractspec/example.learning-journey-ui-onboarding": "3.7.12",
63
+ "@contractspec/example.learning-journey-ui-shared": "3.7.12",
64
+ "@contractspec/example.learning-patterns": "3.7.12",
65
+ "@contractspec/example.lifecycle-cli": "3.7.12",
66
+ "@contractspec/example.lifecycle-dashboard": "3.7.12",
67
+ "@contractspec/example.locale-jurisdiction-gate": "3.7.12",
68
+ "@contractspec/example.marketplace": "3.8.4",
69
+ "@contractspec/example.meeting-recorder-providers": "3.7.12",
70
+ "@contractspec/example.messaging-agent-actions": "3.8.4",
71
+ "@contractspec/example.minimal": "2.8.4",
72
+ "@contractspec/example.openbanking-powens": "3.7.12",
73
+ "@contractspec/example.opencode-cli": "2.8.4",
74
+ "@contractspec/example.personalization": "3.7.12",
75
+ "@contractspec/example.pocket-family-office": "3.7.12",
76
+ "@contractspec/example.policy-safe-knowledge-assistant": "3.7.12",
77
+ "@contractspec/example.product-intent": "3.7.12",
78
+ "@contractspec/example.project-management-sync": "3.7.12",
79
+ "@contractspec/example.saas-boilerplate": "3.8.4",
80
+ "@contractspec/example.service-business-os": "3.7.12",
81
+ "@contractspec/example.team-hub": "3.7.12",
82
+ "@contractspec/example.versioned-knowledge-base": "3.7.12",
83
+ "@contractspec/example.video-api-showcase": "3.7.12",
84
+ "@contractspec/example.video-docs-terminal": "3.7.12",
85
+ "@contractspec/example.video-marketing-clip": "3.7.12",
86
+ "@contractspec/example.visualization-showcase": "3.9.4",
87
+ "@contractspec/example.wealth-snapshot": "3.7.12",
88
+ "@contractspec/example.workflow-system": "3.8.4",
89
+ "@contractspec/lib.contracts-spec": "5.0.0",
90
+ "@contractspec/lib.example-shared-ui": "6.0.12",
91
+ "@contractspec/lib.runtime-sandbox": "2.7.10",
92
+ "zod": "^4.3.5",
93
+ "@contractspec/lib.contracts-runtime-client-react": "3.8.0",
94
+ "@contractspec/lib.presentation-runtime-core": "3.9.0"
88
95
  },
89
96
  "devDependencies": {
90
- "@contractspec/tool.typescript": "3.7.6",
97
+ "@contractspec/tool.typescript": "3.7.9",
91
98
  "typescript": "^5.9.3",
92
- "@contractspec/tool.bun": "3.7.6"
99
+ "@contractspec/tool.bun": "3.7.9"
93
100
  },
94
101
  "exports": {
95
102
  ".": {