@contractspec/module.examples 3.7.7 → 3.8.2

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,6 +10,7 @@ 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";
14
15
  import InAppDocs from "@contractspec/example.in-app-docs/example";
15
16
  import IntegrationHub from "@contractspec/example.integration-hub/example";
@@ -35,7 +36,10 @@ import LifecycleDashboard from "@contractspec/example.lifecycle-dashboard/exampl
35
36
  import LocaleJurisdictionGate from "@contractspec/example.locale-jurisdiction-gate/example";
36
37
  import Marketplace from "@contractspec/example.marketplace/example";
37
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";
38
41
  import OpenbankingPowens from "@contractspec/example.openbanking-powens/example";
42
+ import OpencodeCli from "@contractspec/example.opencode-cli/example";
39
43
  import Personalization from "@contractspec/example.personalization/example";
40
44
  import PocketFamilyOffice from "@contractspec/example.pocket-family-office/example";
41
45
  import PolicySafeKnowledgeAssistant from "@contractspec/example.policy-safe-knowledge-assistant/example";
@@ -48,6 +52,7 @@ import VersionedKnowledgeBase from "@contractspec/example.versioned-knowledge-ba
48
52
  import VideoApiShowcase from "@contractspec/example.video-api-showcase/example";
49
53
  import VideoDocsTerminal from "@contractspec/example.video-docs-terminal/example";
50
54
  import VideoMarketingClip from "@contractspec/example.video-marketing-clip/example";
55
+ import VisualizationShowcase from "@contractspec/example.visualization-showcase/example";
51
56
  import VoiceProviders from "@contractspec/example.voice-providers/example";
52
57
  import WealthSnapshot from "@contractspec/example.wealth-snapshot/example";
53
58
  import WorkflowSystem from "@contractspec/example.workflow-system/example";
@@ -59,6 +64,7 @@ var EXAMPLE_REGISTRY = [
59
64
  CalendarGoogle,
60
65
  ContentGeneration,
61
66
  CrmPipeline,
67
+ DataGridShowcase,
62
68
  EmailGmail,
63
69
  InAppDocs,
64
70
  IntegrationHub,
@@ -84,7 +90,10 @@ var EXAMPLE_REGISTRY = [
84
90
  LocaleJurisdictionGate,
85
91
  Marketplace,
86
92
  MeetingRecorderProviders,
93
+ MessagingAgentActions,
94
+ Minimal,
87
95
  OpenbankingPowens,
96
+ OpencodeCli,
88
97
  Personalization,
89
98
  PocketFamilyOffice,
90
99
  PolicySafeKnowledgeAssistant,
@@ -97,6 +106,7 @@ var EXAMPLE_REGISTRY = [
97
106
  VideoApiShowcase,
98
107
  VideoDocsTerminal,
99
108
  VideoMarketingClip,
109
+ VisualizationShowcase,
100
110
  VoiceProviders,
101
111
  WealthSnapshot,
102
112
  WorkflowSystem
@@ -123,7 +133,9 @@ import { ApolloProvider } from "@apollo/client/react";
123
133
  import { web as web2 } from "@contractspec/lib.runtime-sandbox";
124
134
  import { useEffect, useMemo, useState } from "react";
125
135
  import {
126
- createAgentHandlers
136
+ AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
137
+ createAgentConsoleDemoHandlers,
138
+ getAgentConsoleDashboardData
127
139
  } from "@contractspec/example.agent-console";
128
140
  import {
129
141
  createAnalyticsHandlers
@@ -186,6 +198,7 @@ import {
186
198
  saasBillingMarkdownRenderer,
187
199
  saasDashboardMarkdownRenderer
188
200
  } from "@contractspec/example.saas-boilerplate";
201
+ import { visualizationShowcaseMarkdownRenderer } from "@contractspec/example.visualization-showcase/ui/renderers";
189
202
  import {
190
203
  workflowDashboardMarkdownRenderer,
191
204
  workflowDefinitionListMarkdownRenderer,
@@ -228,6 +241,7 @@ function registerTemplateRenderers(engine) {
228
241
  engine.register(analyticsDashboardMarkdownRenderer);
229
242
  engine.register(dashboardListMarkdownRenderer);
230
243
  engine.register(queryBuilderMarkdownRenderer);
244
+ engine.register(visualizationShowcaseMarkdownRenderer);
231
245
  }
232
246
  var templateEngine = null;
233
247
  function getTemplateEngine() {
@@ -253,9 +267,9 @@ var PRESENTATIONS_BY_TEMPLATE = {
253
267
  "crm-pipeline": ["crm-pipeline.dashboard", "crm-pipeline.deal.pipeline"],
254
268
  "agent-console": [
255
269
  "agent-console.dashboard",
256
- "agent-console.agent.list",
270
+ "agent-console.agent.viewList",
257
271
  "agent-console.run.list",
258
- "agent-console.tool.registry"
272
+ "agent-console.tool.list"
259
273
  ],
260
274
  "workflow-system": [
261
275
  "workflow-system.dashboard",
@@ -265,8 +279,7 @@ var PRESENTATIONS_BY_TEMPLATE = {
265
279
  marketplace: [
266
280
  "marketplace.dashboard",
267
281
  "marketplace.product.catalog",
268
- "marketplace.order.list",
269
- "marketplace.store.manage"
282
+ "marketplace.order.list"
270
283
  ],
271
284
  "integration-hub": [
272
285
  "integration-hub.dashboard",
@@ -278,6 +291,7 @@ var PRESENTATIONS_BY_TEMPLATE = {
278
291
  "analytics-dashboard.list",
279
292
  "analytics-dashboard.query.builder"
280
293
  ],
294
+ "visualization-showcase": ["visualization-showcase.gallery"],
281
295
  "learning-journey-studio-onboarding": [
282
296
  "learning.journey.track_list",
283
297
  "learning.journey.track_detail",
@@ -309,6 +323,28 @@ var PRESENTATIONS_BY_TEMPLATE = {
309
323
  "learning.journey.progress_widget"
310
324
  ]
311
325
  };
326
+ var GENERATED_TEMPLATE_REGISTRY = listExamples().filter((example) => example.meta.key !== "agent-console").map((example) => {
327
+ const tags = [...example.meta.tags ?? []];
328
+ const category = tags.some((tag) => tag.toLowerCase() === "ai") || tags.some((tag) => tag.toLowerCase() === "assistant") ? "ai" : "business";
329
+ return {
330
+ id: example.meta.key,
331
+ name: example.meta.title ?? example.meta.key,
332
+ description: example.meta.description ?? "",
333
+ category,
334
+ complexity: "beginner",
335
+ icon: "\uD83D\uDCE6",
336
+ features: [],
337
+ tags,
338
+ schema: { models: [], contracts: [] },
339
+ components: { list: "ExampleList", detail: "ExampleDetail" },
340
+ preview: {
341
+ demoUrl: `/sandbox?template=${encodeURIComponent(example.meta.key)}`
342
+ },
343
+ package: example.entrypoints.packageName,
344
+ presentations: PRESENTATIONS_BY_TEMPLATE[example.meta.key] ?? [],
345
+ renderTargets: ["react", "markdown"]
346
+ };
347
+ });
312
348
  var TEMPLATE_REGISTRY = [
313
349
  {
314
350
  id: "todos-app",
@@ -395,30 +431,42 @@ var TEMPLATE_REGISTRY = [
395
431
  quickstart: "/docs/templates/recipe-app-i18n"
396
432
  }
397
433
  },
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
- })
434
+ {
435
+ id: "agent-console",
436
+ name: "Agent Console",
437
+ description: "Deterministic autonomous-agent walkthrough with seeded agents, tool registry, runs, metrics, and replayable proof.",
438
+ category: "ai",
439
+ complexity: "intermediate",
440
+ icon: "\uD83E\uDD16",
441
+ features: [
442
+ "Seeded autonomous agents",
443
+ "Tool registry",
444
+ "Run execution history",
445
+ "Metrics",
446
+ "Markdown and React views"
447
+ ],
448
+ tags: ["ai", "agents", "autonomous", "meetup", "sandbox"],
449
+ schema: {
450
+ models: ["Agent", "Tool", "Run"],
451
+ contracts: [
452
+ "agent-console.agent.list",
453
+ "agent-console.agent.create",
454
+ "agent-console.run.execute"
455
+ ]
456
+ },
457
+ components: {
458
+ list: "AgentListView",
459
+ detail: "RunListView",
460
+ form: "CreateAgentModal"
461
+ },
462
+ preview: {
463
+ demoUrl: "/sandbox?template=agent-console"
464
+ },
465
+ package: "@contractspec/example.agent-console",
466
+ presentations: PRESENTATIONS_BY_TEMPLATE["agent-console"] ?? [],
467
+ renderTargets: ["react", "markdown"]
468
+ },
469
+ ...GENERATED_TEMPLATE_REGISTRY
422
470
  ];
423
471
  function listTemplates(filter) {
424
472
  if (!filter)
@@ -598,6 +646,58 @@ function toBase64(bytes) {
598
646
  return btoa(binary);
599
647
  }
600
648
 
649
+ // src/runtime/presentations.ts
650
+ function createComponentPresentation(key, title, description, goal, context, componentKey) {
651
+ return {
652
+ meta: {
653
+ key,
654
+ version: "1.0.0",
655
+ title,
656
+ description,
657
+ stability: "experimental",
658
+ goal,
659
+ context,
660
+ owners: ["@contractspec/examples"],
661
+ tags: ["template", "sandbox"]
662
+ },
663
+ source: {
664
+ type: "component",
665
+ framework: "react",
666
+ componentKey
667
+ },
668
+ targets: ["react", "markdown"]
669
+ };
670
+ }
671
+ var TEMPLATE_PRESENTATIONS = {
672
+ "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"),
673
+ "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"),
674
+ "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"),
675
+ "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"),
676
+ "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"),
677
+ "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"),
678
+ "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"),
679
+ "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"),
680
+ "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"),
681
+ "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"),
682
+ "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"),
683
+ "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"),
684
+ "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"),
685
+ "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"),
686
+ "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"),
687
+ "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"),
688
+ "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"),
689
+ "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"),
690
+ "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"),
691
+ "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"),
692
+ "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"),
693
+ "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"),
694
+ "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"),
695
+ "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")
696
+ };
697
+ function resolveTemplatePresentation(presentationName) {
698
+ return TEMPLATE_PRESENTATIONS[presentationName];
699
+ }
700
+
601
701
  // src/runtime/context.tsx
602
702
  import { jsxDEV } from "react/jsx-dev-runtime";
603
703
  "use client";
@@ -628,7 +728,7 @@ class TemplateHandlers {
628
728
  }
629
729
  function TemplateRuntimeProvider({
630
730
  templateId,
631
- projectId = "default-project",
731
+ projectId = "local-project",
632
732
  lazy = false,
633
733
  children
634
734
  }) {
@@ -653,7 +753,7 @@ function TemplateRuntimeProvider({
653
753
  const handlers = new TemplateHandlers;
654
754
  handlers.crm = createCrmHandlers(runtime.db);
655
755
  handlers.saas = createSaasHandlers(runtime.db);
656
- handlers.agent = createAgentHandlers(runtime.db);
756
+ handlers.agent = createAgentConsoleDemoHandlers({ projectId });
657
757
  handlers.workflow = createWorkflowHandlers(runtime.db);
658
758
  handlers.marketplace = createMarketplaceHandlers(runtime.db);
659
759
  handlers.integration = createIntegrationHandlers(runtime.db);
@@ -750,37 +850,19 @@ function TemplateRuntimeProvider({
750
850
  };
751
851
  }
752
852
  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
- ]);
853
+ const data = await getAgentConsoleDashboardData(handlers.agent, {
854
+ projectId,
855
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID
856
+ });
766
857
  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
- },
858
+ data,
777
859
  metadata: { timestamp: new Date, source: "agent-console" }
778
860
  };
779
861
  }
780
- if (presentationName === "agent-console.agent.list") {
862
+ if (presentationName === "agent-console.agent.viewList" || presentationName === "agent-console.agent.list") {
781
863
  const result = await handlers.agent.listAgents({
782
864
  projectId,
783
- organizationId: "demo-org",
865
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
784
866
  limit: 50
785
867
  });
786
868
  return {
@@ -806,10 +888,10 @@ function TemplateRuntimeProvider({
806
888
  }
807
889
  };
808
890
  }
809
- if (presentationName === "agent-console.tool.registry") {
891
+ if (presentationName === "agent-console.tool.list" || presentationName === "agent-console.tool.registry") {
810
892
  const result = await handlers.agent.listTools({
811
893
  projectId,
812
- organizationId: "demo-org",
894
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
813
895
  limit: 50
814
896
  });
815
897
  return {
@@ -821,6 +903,15 @@ function TemplateRuntimeProvider({
821
903
  }
822
904
  };
823
905
  }
906
+ if (presentationName === "visualization-showcase.gallery") {
907
+ return {
908
+ data: null,
909
+ metadata: {
910
+ timestamp: new Date,
911
+ source: "visualization-showcase"
912
+ }
913
+ };
914
+ }
824
915
  console.warn(`No data fetcher found for presentation: ${presentationName}`);
825
916
  return {
826
917
  data: null,
@@ -837,7 +928,8 @@ function TemplateRuntimeProvider({
837
928
  projectId,
838
929
  engine,
839
930
  handlers,
840
- fetchData
931
+ fetchData,
932
+ resolvePresentation: resolveTemplatePresentation
841
933
  });
842
934
  }
843
935
  } catch (err) {
@@ -9,6 +9,7 @@ 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";
13
14
  import InAppDocs from "@contractspec/example.in-app-docs/example";
14
15
  import IntegrationHub from "@contractspec/example.integration-hub/example";
@@ -34,7 +35,10 @@ import LifecycleDashboard from "@contractspec/example.lifecycle-dashboard/exampl
34
35
  import LocaleJurisdictionGate from "@contractspec/example.locale-jurisdiction-gate/example";
35
36
  import Marketplace from "@contractspec/example.marketplace/example";
36
37
  import MeetingRecorderProviders from "@contractspec/example.meeting-recorder-providers/example";
38
+ import MessagingAgentActions from "@contractspec/example.messaging-agent-actions/example";
39
+ import Minimal from "@contractspec/example.minimal/example";
37
40
  import OpenbankingPowens from "@contractspec/example.openbanking-powens/example";
41
+ import OpencodeCli from "@contractspec/example.opencode-cli/example";
38
42
  import Personalization from "@contractspec/example.personalization/example";
39
43
  import PocketFamilyOffice from "@contractspec/example.pocket-family-office/example";
40
44
  import PolicySafeKnowledgeAssistant from "@contractspec/example.policy-safe-knowledge-assistant/example";
@@ -47,6 +51,7 @@ import VersionedKnowledgeBase from "@contractspec/example.versioned-knowledge-ba
47
51
  import VideoApiShowcase from "@contractspec/example.video-api-showcase/example";
48
52
  import VideoDocsTerminal from "@contractspec/example.video-docs-terminal/example";
49
53
  import VideoMarketingClip from "@contractspec/example.video-marketing-clip/example";
54
+ import VisualizationShowcase from "@contractspec/example.visualization-showcase/example";
50
55
  import VoiceProviders from "@contractspec/example.voice-providers/example";
51
56
  import WealthSnapshot from "@contractspec/example.wealth-snapshot/example";
52
57
  import WorkflowSystem from "@contractspec/example.workflow-system/example";
@@ -58,6 +63,7 @@ var EXAMPLE_REGISTRY = [
58
63
  CalendarGoogle,
59
64
  ContentGeneration,
60
65
  CrmPipeline,
66
+ DataGridShowcase,
61
67
  EmailGmail,
62
68
  InAppDocs,
63
69
  IntegrationHub,
@@ -83,7 +89,10 @@ var EXAMPLE_REGISTRY = [
83
89
  LocaleJurisdictionGate,
84
90
  Marketplace,
85
91
  MeetingRecorderProviders,
92
+ MessagingAgentActions,
93
+ Minimal,
86
94
  OpenbankingPowens,
95
+ OpencodeCli,
87
96
  Personalization,
88
97
  PocketFamilyOffice,
89
98
  PolicySafeKnowledgeAssistant,
@@ -96,6 +105,7 @@ var EXAMPLE_REGISTRY = [
96
105
  VideoApiShowcase,
97
106
  VideoDocsTerminal,
98
107
  VideoMarketingClip,
108
+ VisualizationShowcase,
99
109
  VoiceProviders,
100
110
  WealthSnapshot,
101
111
  WorkflowSystem
@@ -122,7 +132,9 @@ import { ApolloProvider } from "@apollo/client/react";
122
132
  import { web as web2 } from "@contractspec/lib.runtime-sandbox";
123
133
  import { useEffect, useMemo, useState } from "react";
124
134
  import {
125
- createAgentHandlers
135
+ AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
136
+ createAgentConsoleDemoHandlers,
137
+ getAgentConsoleDashboardData
126
138
  } from "@contractspec/example.agent-console";
127
139
  import {
128
140
  createAnalyticsHandlers
@@ -185,6 +197,7 @@ import {
185
197
  saasBillingMarkdownRenderer,
186
198
  saasDashboardMarkdownRenderer
187
199
  } from "@contractspec/example.saas-boilerplate";
200
+ import { visualizationShowcaseMarkdownRenderer } from "@contractspec/example.visualization-showcase/ui/renderers";
188
201
  import {
189
202
  workflowDashboardMarkdownRenderer,
190
203
  workflowDefinitionListMarkdownRenderer,
@@ -227,6 +240,7 @@ function registerTemplateRenderers(engine) {
227
240
  engine.register(analyticsDashboardMarkdownRenderer);
228
241
  engine.register(dashboardListMarkdownRenderer);
229
242
  engine.register(queryBuilderMarkdownRenderer);
243
+ engine.register(visualizationShowcaseMarkdownRenderer);
230
244
  }
231
245
  var templateEngine = null;
232
246
  function getTemplateEngine() {
@@ -252,9 +266,9 @@ var PRESENTATIONS_BY_TEMPLATE = {
252
266
  "crm-pipeline": ["crm-pipeline.dashboard", "crm-pipeline.deal.pipeline"],
253
267
  "agent-console": [
254
268
  "agent-console.dashboard",
255
- "agent-console.agent.list",
269
+ "agent-console.agent.viewList",
256
270
  "agent-console.run.list",
257
- "agent-console.tool.registry"
271
+ "agent-console.tool.list"
258
272
  ],
259
273
  "workflow-system": [
260
274
  "workflow-system.dashboard",
@@ -264,8 +278,7 @@ var PRESENTATIONS_BY_TEMPLATE = {
264
278
  marketplace: [
265
279
  "marketplace.dashboard",
266
280
  "marketplace.product.catalog",
267
- "marketplace.order.list",
268
- "marketplace.store.manage"
281
+ "marketplace.order.list"
269
282
  ],
270
283
  "integration-hub": [
271
284
  "integration-hub.dashboard",
@@ -277,6 +290,7 @@ var PRESENTATIONS_BY_TEMPLATE = {
277
290
  "analytics-dashboard.list",
278
291
  "analytics-dashboard.query.builder"
279
292
  ],
293
+ "visualization-showcase": ["visualization-showcase.gallery"],
280
294
  "learning-journey-studio-onboarding": [
281
295
  "learning.journey.track_list",
282
296
  "learning.journey.track_detail",
@@ -308,6 +322,28 @@ var PRESENTATIONS_BY_TEMPLATE = {
308
322
  "learning.journey.progress_widget"
309
323
  ]
310
324
  };
325
+ var GENERATED_TEMPLATE_REGISTRY = listExamples().filter((example) => example.meta.key !== "agent-console").map((example) => {
326
+ const tags = [...example.meta.tags ?? []];
327
+ const category = tags.some((tag) => tag.toLowerCase() === "ai") || tags.some((tag) => tag.toLowerCase() === "assistant") ? "ai" : "business";
328
+ return {
329
+ id: example.meta.key,
330
+ name: example.meta.title ?? example.meta.key,
331
+ description: example.meta.description ?? "",
332
+ category,
333
+ complexity: "beginner",
334
+ icon: "\uD83D\uDCE6",
335
+ features: [],
336
+ tags,
337
+ schema: { models: [], contracts: [] },
338
+ components: { list: "ExampleList", detail: "ExampleDetail" },
339
+ preview: {
340
+ demoUrl: `/sandbox?template=${encodeURIComponent(example.meta.key)}`
341
+ },
342
+ package: example.entrypoints.packageName,
343
+ presentations: PRESENTATIONS_BY_TEMPLATE[example.meta.key] ?? [],
344
+ renderTargets: ["react", "markdown"]
345
+ };
346
+ });
311
347
  var TEMPLATE_REGISTRY = [
312
348
  {
313
349
  id: "todos-app",
@@ -394,30 +430,42 @@ var TEMPLATE_REGISTRY = [
394
430
  quickstart: "/docs/templates/recipe-app-i18n"
395
431
  }
396
432
  },
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
- })
433
+ {
434
+ id: "agent-console",
435
+ name: "Agent Console",
436
+ description: "Deterministic autonomous-agent walkthrough with seeded agents, tool registry, runs, metrics, and replayable proof.",
437
+ category: "ai",
438
+ complexity: "intermediate",
439
+ icon: "\uD83E\uDD16",
440
+ features: [
441
+ "Seeded autonomous agents",
442
+ "Tool registry",
443
+ "Run execution history",
444
+ "Metrics",
445
+ "Markdown and React views"
446
+ ],
447
+ tags: ["ai", "agents", "autonomous", "meetup", "sandbox"],
448
+ schema: {
449
+ models: ["Agent", "Tool", "Run"],
450
+ contracts: [
451
+ "agent-console.agent.list",
452
+ "agent-console.agent.create",
453
+ "agent-console.run.execute"
454
+ ]
455
+ },
456
+ components: {
457
+ list: "AgentListView",
458
+ detail: "RunListView",
459
+ form: "CreateAgentModal"
460
+ },
461
+ preview: {
462
+ demoUrl: "/sandbox?template=agent-console"
463
+ },
464
+ package: "@contractspec/example.agent-console",
465
+ presentations: PRESENTATIONS_BY_TEMPLATE["agent-console"] ?? [],
466
+ renderTargets: ["react", "markdown"]
467
+ },
468
+ ...GENERATED_TEMPLATE_REGISTRY
421
469
  ];
422
470
  function listTemplates(filter) {
423
471
  if (!filter)
@@ -597,6 +645,58 @@ function toBase64(bytes) {
597
645
  return btoa(binary);
598
646
  }
599
647
 
648
+ // src/runtime/presentations.ts
649
+ function createComponentPresentation(key, title, description, goal, context, componentKey) {
650
+ return {
651
+ meta: {
652
+ key,
653
+ version: "1.0.0",
654
+ title,
655
+ description,
656
+ stability: "experimental",
657
+ goal,
658
+ context,
659
+ owners: ["@contractspec/examples"],
660
+ tags: ["template", "sandbox"]
661
+ },
662
+ source: {
663
+ type: "component",
664
+ framework: "react",
665
+ componentKey
666
+ },
667
+ targets: ["react", "markdown"]
668
+ };
669
+ }
670
+ var TEMPLATE_PRESENTATIONS = {
671
+ "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"),
672
+ "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"),
673
+ "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"),
674
+ "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"),
675
+ "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"),
676
+ "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"),
677
+ "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"),
678
+ "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"),
679
+ "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"),
680
+ "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"),
681
+ "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"),
682
+ "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"),
683
+ "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"),
684
+ "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"),
685
+ "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"),
686
+ "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"),
687
+ "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"),
688
+ "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"),
689
+ "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"),
690
+ "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"),
691
+ "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"),
692
+ "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"),
693
+ "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"),
694
+ "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")
695
+ };
696
+ function resolveTemplatePresentation(presentationName) {
697
+ return TEMPLATE_PRESENTATIONS[presentationName];
698
+ }
699
+
600
700
  // src/runtime/context.tsx
601
701
  import { jsxDEV } from "react/jsx-dev-runtime";
602
702
  "use client";
@@ -627,7 +727,7 @@ class TemplateHandlers {
627
727
  }
628
728
  function TemplateRuntimeProvider({
629
729
  templateId,
630
- projectId = "default-project",
730
+ projectId = "local-project",
631
731
  lazy = false,
632
732
  children
633
733
  }) {
@@ -652,7 +752,7 @@ function TemplateRuntimeProvider({
652
752
  const handlers = new TemplateHandlers;
653
753
  handlers.crm = createCrmHandlers(runtime.db);
654
754
  handlers.saas = createSaasHandlers(runtime.db);
655
- handlers.agent = createAgentHandlers(runtime.db);
755
+ handlers.agent = createAgentConsoleDemoHandlers({ projectId });
656
756
  handlers.workflow = createWorkflowHandlers(runtime.db);
657
757
  handlers.marketplace = createMarketplaceHandlers(runtime.db);
658
758
  handlers.integration = createIntegrationHandlers(runtime.db);
@@ -749,37 +849,19 @@ function TemplateRuntimeProvider({
749
849
  };
750
850
  }
751
851
  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
- ]);
852
+ const data = await getAgentConsoleDashboardData(handlers.agent, {
853
+ projectId,
854
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID
855
+ });
765
856
  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
- },
857
+ data,
776
858
  metadata: { timestamp: new Date, source: "agent-console" }
777
859
  };
778
860
  }
779
- if (presentationName === "agent-console.agent.list") {
861
+ if (presentationName === "agent-console.agent.viewList" || presentationName === "agent-console.agent.list") {
780
862
  const result = await handlers.agent.listAgents({
781
863
  projectId,
782
- organizationId: "demo-org",
864
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
783
865
  limit: 50
784
866
  });
785
867
  return {
@@ -805,10 +887,10 @@ function TemplateRuntimeProvider({
805
887
  }
806
888
  };
807
889
  }
808
- if (presentationName === "agent-console.tool.registry") {
890
+ if (presentationName === "agent-console.tool.list" || presentationName === "agent-console.tool.registry") {
809
891
  const result = await handlers.agent.listTools({
810
892
  projectId,
811
- organizationId: "demo-org",
893
+ organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
812
894
  limit: 50
813
895
  });
814
896
  return {
@@ -820,6 +902,15 @@ function TemplateRuntimeProvider({
820
902
  }
821
903
  };
822
904
  }
905
+ if (presentationName === "visualization-showcase.gallery") {
906
+ return {
907
+ data: null,
908
+ metadata: {
909
+ timestamp: new Date,
910
+ source: "visualization-showcase"
911
+ }
912
+ };
913
+ }
823
914
  console.warn(`No data fetcher found for presentation: ${presentationName}`);
824
915
  return {
825
916
  data: null,
@@ -836,7 +927,8 @@ function TemplateRuntimeProvider({
836
927
  projectId,
837
928
  engine,
838
929
  handlers,
839
- fetchData
930
+ fetchData,
931
+ resolvePresentation: resolveTemplatePresentation
840
932
  });
841
933
  }
842
934
  } catch (err) {
@@ -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.2",
4
4
  "description": "Example contract specifications collection",
5
5
  "keywords": [
6
6
  "contractspec",
@@ -33,63 +33,68 @@
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",
36
+ "@contractspec/example.agent-console": "3.8.2",
37
+ "@contractspec/example.ai-chat-assistant": "3.8.2",
38
+ "@contractspec/example.ai-support-bot": "3.7.10",
39
+ "@contractspec/example.analytics-dashboard": "3.9.2",
40
+ "@contractspec/example.calendar-google": "3.7.10",
41
+ "@contractspec/example.content-generation": "3.7.10",
42
+ "@contractspec/example.crm-pipeline": "3.7.10",
43
+ "@contractspec/example.data-grid-showcase": "3.8.2",
44
+ "@contractspec/example.email-gmail": "3.7.10",
45
+ "@contractspec/example.in-app-docs": "3.7.10",
46
+ "@contractspec/example.integration-hub": "3.8.2",
47
+ "@contractspec/example.integration-posthog": "3.7.10",
48
+ "@contractspec/example.integration-stripe": "3.7.10",
49
+ "@contractspec/example.integration-supabase": "3.7.10",
50
+ "@contractspec/example.voice-providers": "3.7.10",
51
+ "@contractspec/example.kb-update-pipeline": "3.7.10",
52
+ "@contractspec/example.knowledge-canon": "3.7.10",
53
+ "@contractspec/example.learning-journey-ambient-coach": "3.7.10",
54
+ "@contractspec/example.learning-journey-crm-onboarding": "3.7.10",
55
+ "@contractspec/example.learning-journey-duo-drills": "3.7.10",
56
+ "@contractspec/example.learning-journey-platform-tour": "3.7.10",
57
+ "@contractspec/example.learning-journey-quest-challenges": "3.7.10",
58
+ "@contractspec/example.learning-journey-registry": "3.7.10",
59
+ "@contractspec/example.learning-journey-studio-onboarding": "3.7.10",
60
+ "@contractspec/example.learning-journey-ui-coaching": "3.7.10",
61
+ "@contractspec/example.learning-journey-ui-gamified": "3.7.10",
62
+ "@contractspec/example.learning-journey-ui-onboarding": "3.7.10",
63
+ "@contractspec/example.learning-journey-ui-shared": "3.7.10",
64
+ "@contractspec/example.learning-patterns": "3.7.10",
65
+ "@contractspec/example.lifecycle-cli": "3.7.10",
66
+ "@contractspec/example.lifecycle-dashboard": "3.7.10",
67
+ "@contractspec/example.locale-jurisdiction-gate": "3.7.10",
68
+ "@contractspec/example.marketplace": "3.8.2",
69
+ "@contractspec/example.meeting-recorder-providers": "3.7.10",
70
+ "@contractspec/example.messaging-agent-actions": "3.8.2",
71
+ "@contractspec/example.minimal": "2.8.2",
72
+ "@contractspec/example.openbanking-powens": "3.7.10",
73
+ "@contractspec/example.opencode-cli": "2.8.2",
74
+ "@contractspec/example.personalization": "3.7.10",
75
+ "@contractspec/example.pocket-family-office": "3.7.10",
76
+ "@contractspec/example.policy-safe-knowledge-assistant": "3.7.10",
77
+ "@contractspec/example.product-intent": "3.7.10",
78
+ "@contractspec/example.project-management-sync": "3.7.10",
79
+ "@contractspec/example.saas-boilerplate": "3.8.2",
80
+ "@contractspec/example.service-business-os": "3.7.10",
81
+ "@contractspec/example.team-hub": "3.7.10",
82
+ "@contractspec/example.versioned-knowledge-base": "3.7.10",
83
+ "@contractspec/example.video-api-showcase": "3.7.10",
84
+ "@contractspec/example.video-docs-terminal": "3.7.10",
85
+ "@contractspec/example.video-marketing-clip": "3.7.10",
86
+ "@contractspec/example.visualization-showcase": "3.9.2",
87
+ "@contractspec/example.wealth-snapshot": "3.7.10",
88
+ "@contractspec/example.workflow-system": "3.8.2",
89
+ "@contractspec/lib.contracts-spec": "4.1.2",
90
+ "@contractspec/lib.example-shared-ui": "6.0.10",
91
+ "@contractspec/lib.runtime-sandbox": "2.7.9",
87
92
  "zod": "^4.3.5"
88
93
  },
89
94
  "devDependencies": {
90
- "@contractspec/tool.typescript": "3.7.6",
95
+ "@contractspec/tool.typescript": "3.7.8",
91
96
  "typescript": "^5.9.3",
92
- "@contractspec/tool.bun": "3.7.6"
97
+ "@contractspec/tool.bun": "3.7.8"
93
98
  },
94
99
  "exports": {
95
100
  ".": {