@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 +4 -0
- package/dist/builtins.d.ts +1 -1
- package/dist/index.js +154 -60
- package/dist/node/index.js +154 -60
- package/dist/runtime/context.d.ts +1 -1
- package/dist/runtime/engine.d.ts +1 -1
- package/dist/runtime/presentations.d.ts +2 -0
- package/package.json +62 -55
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`.
|
package/dist/builtins.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ExampleSpec } from
|
|
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
|
-
|
|
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-
|
|
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.
|
|
272
|
+
"agent-console.agent.viewList",
|
|
257
273
|
"agent-console.run.list",
|
|
258
|
-
"agent-console.tool.
|
|
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
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
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 = "
|
|
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 =
|
|
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
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
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:
|
|
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:
|
|
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) {
|
package/dist/node/index.js
CHANGED
|
@@ -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
|
-
|
|
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-
|
|
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.
|
|
271
|
+
"agent-console.agent.viewList",
|
|
256
272
|
"agent-console.run.list",
|
|
257
|
-
"agent-console.tool.
|
|
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
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
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 = "
|
|
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 =
|
|
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
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
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:
|
|
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:
|
|
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
|
*/
|
package/dist/runtime/engine.d.ts
CHANGED
|
@@ -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-
|
|
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
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contractspec/module.examples",
|
|
3
|
-
"version": "3.
|
|
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.
|
|
37
|
-
"@contractspec/example.ai-chat-assistant": "3.
|
|
38
|
-
"@contractspec/example.ai-support-bot": "3.7.
|
|
39
|
-
"@contractspec/example.analytics-dashboard": "3.
|
|
40
|
-
"@contractspec/example.calendar-google": "3.7.
|
|
41
|
-
"@contractspec/example.content-generation": "3.7.
|
|
42
|
-
"@contractspec/example.crm-pipeline": "3.7.
|
|
43
|
-
"@contractspec/example.
|
|
44
|
-
"@contractspec/example.
|
|
45
|
-
"@contractspec/example.
|
|
46
|
-
"@contractspec/example.integration-
|
|
47
|
-
"@contractspec/example.integration-
|
|
48
|
-
"@contractspec/example.integration-
|
|
49
|
-
"@contractspec/example.
|
|
50
|
-
"@contractspec/example.
|
|
51
|
-
"@contractspec/example.
|
|
52
|
-
"@contractspec/example.
|
|
53
|
-
"@contractspec/example.learning-journey-
|
|
54
|
-
"@contractspec/example.learning-journey-
|
|
55
|
-
"@contractspec/example.learning-journey-
|
|
56
|
-
"@contractspec/example.learning-journey-
|
|
57
|
-
"@contractspec/example.learning-journey-
|
|
58
|
-
"@contractspec/example.learning-journey-
|
|
59
|
-
"@contractspec/example.learning-journey-
|
|
60
|
-
"@contractspec/example.learning-journey-ui-
|
|
61
|
-
"@contractspec/example.learning-journey-ui-
|
|
62
|
-
"@contractspec/example.learning-journey-ui-
|
|
63
|
-
"@contractspec/example.learning-
|
|
64
|
-
"@contractspec/example.
|
|
65
|
-
"@contractspec/example.lifecycle-
|
|
66
|
-
"@contractspec/example.
|
|
67
|
-
"@contractspec/example.
|
|
68
|
-
"@contractspec/example.
|
|
69
|
-
"@contractspec/example.
|
|
70
|
-
"@contractspec/example.
|
|
71
|
-
"@contractspec/example.
|
|
72
|
-
"@contractspec/example.
|
|
73
|
-
"@contractspec/example.
|
|
74
|
-
"@contractspec/example.
|
|
75
|
-
"@contractspec/example.
|
|
76
|
-
"@contractspec/example.
|
|
77
|
-
"@contractspec/example.
|
|
78
|
-
"@contractspec/example.
|
|
79
|
-
"@contractspec/example.
|
|
80
|
-
"@contractspec/example.
|
|
81
|
-
"@contractspec/example.
|
|
82
|
-
"@contractspec/example.
|
|
83
|
-
"@contractspec/example.
|
|
84
|
-
"@contractspec/
|
|
85
|
-
"@contractspec/
|
|
86
|
-
"@contractspec/
|
|
87
|
-
"
|
|
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.
|
|
97
|
+
"@contractspec/tool.typescript": "3.7.9",
|
|
91
98
|
"typescript": "^5.9.3",
|
|
92
|
-
"@contractspec/tool.bun": "3.7.
|
|
99
|
+
"@contractspec/tool.bun": "3.7.9"
|
|
93
100
|
},
|
|
94
101
|
"exports": {
|
|
95
102
|
".": {
|