@noodleseed/one 0.173.0 → 0.175.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/commands/solutions-activity.js +1 -1
  2. package/dist/commands/solutions-activity.js.map +1 -1
  3. package/dist/commands/solutions-drafts.d.ts.map +1 -1
  4. package/dist/commands/solutions-drafts.js +36 -9
  5. package/dist/commands/solutions-drafts.js.map +1 -1
  6. package/dist/commands/solutions-native-lifecycle.d.ts +5 -0
  7. package/dist/commands/solutions-native-lifecycle.d.ts.map +1 -0
  8. package/dist/commands/solutions-native-lifecycle.js +77 -0
  9. package/dist/commands/solutions-native-lifecycle.js.map +1 -0
  10. package/dist/commands/solutions-ops-args.d.ts +42 -0
  11. package/dist/commands/solutions-ops-args.d.ts.map +1 -0
  12. package/dist/commands/solutions-ops-args.js +47 -0
  13. package/dist/commands/solutions-ops-args.js.map +1 -0
  14. package/dist/commands/solutions-ops.d.ts.map +1 -1
  15. package/dist/commands/solutions-ops.js +9 -46
  16. package/dist/commands/solutions-ops.js.map +1 -1
  17. package/dist/commands/solutions-workspace.d.ts +5 -0
  18. package/dist/commands/solutions-workspace.d.ts.map +1 -0
  19. package/dist/commands/solutions-workspace.js +157 -0
  20. package/dist/commands/solutions-workspace.js.map +1 -0
  21. package/dist/commands/whatsapp-output.d.ts.map +1 -1
  22. package/dist/commands/whatsapp-output.js +20 -4
  23. package/dist/commands/whatsapp-output.js.map +1 -1
  24. package/node_modules/@noodle-borg/admission-limits/dist/public-record-admission.d.ts +16 -9
  25. package/node_modules/@noodle-borg/admission-limits/dist/public-record-admission.js +5 -2
  26. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +9 -0
  27. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -5
  28. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +9 -0
  29. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +1 -1
  30. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +13 -1
  31. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  32. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-coordinator.d.ts +5 -3
  33. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-coordinator.js +5 -4
  34. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-inbox.js +6 -2
  35. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-store.d.ts +1 -1
  36. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-types.d.ts +12 -0
  37. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-work.d.ts +7 -2
  38. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-work.js +14 -4
  39. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-capture.js +104 -0
  40. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-judgment.js +93 -0
  41. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-ledger.d.ts +105 -0
  42. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-ledger.js +183 -0
  43. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-model-call.js +38 -0
  44. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-parsers.d.ts +22 -0
  45. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-parsers.js +109 -0
  46. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-review.d.ts +21 -0
  47. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-review.js +44 -0
  48. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-spec.d.ts +18 -0
  49. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-spec.js +86 -0
  50. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-store.d.ts +11 -0
  51. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-store.js +18 -0
  52. package/node_modules/@noodle-borg/assistant-gateway/dist/messaging-tool-dispatch.d.ts +20 -1
  53. package/node_modules/@noodle-borg/assistant-gateway/dist/messaging-tool-dispatch.js +38 -2
  54. package/node_modules/@noodle-borg/assistant-gateway/dist/model-runtime.js +3 -0
  55. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.d.ts +5 -0
  56. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.js +5 -0
  57. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +1 -0
  58. package/node_modules/@noodle-borg/authoring/dist/interaction.d.ts +49 -0
  59. package/node_modules/@noodle-borg/authoring/dist/interaction.js +25 -0
  60. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +3 -0
  61. package/node_modules/@noodle-borg/authoring/dist/server.js +4 -0
  62. package/node_modules/@noodle-borg/authoring/package.json +6 -1
  63. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-channels.js +1 -1
  64. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-drafts.js +7 -0
  65. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-native-lifecycle.js +43 -0
  66. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-records.js +154 -0
  67. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-workspace.js +95 -0
  68. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solutions.js +4 -149
  69. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js +2 -1
  70. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +33 -0
  71. package/node_modules/@noodle-borg/compiler/dist/artifact/version.d.ts +2 -1
  72. package/node_modules/@noodle-borg/compiler/dist/artifact/version.js +2 -1
  73. package/node_modules/@noodle-borg/compiler/dist/compile.js +5 -0
  74. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
  75. package/node_modules/@noodle-borg/compiler/dist/index.d.ts +2 -2
  76. package/node_modules/@noodle-borg/compiler/dist/index.js +1 -1
  77. package/node_modules/@noodle-borg/compiler/dist/manifest/interaction-schema.d.ts +41 -0
  78. package/node_modules/@noodle-borg/compiler/dist/manifest/interaction-schema.js +62 -0
  79. package/node_modules/@noodle-borg/compiler/dist/manifest/interaction-validation.js +220 -0
  80. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +60 -4
  81. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +7 -1
  82. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts +9 -1
  83. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.js +58 -10
  84. package/node_modules/@noodle-borg/control-plane/dist/in-memory-atomic-state.d.ts +8 -0
  85. package/node_modules/@noodle-borg/control-plane/dist/in-memory-atomic-state.js +136 -0
  86. package/node_modules/@noodle-borg/control-plane/dist/in-memory-control-plane-store.d.ts +7 -0
  87. package/node_modules/@noodle-borg/control-plane/dist/in-memory-control-plane-store.js +16 -24
  88. package/node_modules/@noodle-borg/control-plane/dist/in-memory-organization-store.d.ts +4 -2
  89. package/node_modules/@noodle-borg/control-plane/dist/in-memory-organization-store.js +8 -6
  90. package/node_modules/@noodle-borg/control-plane/dist/mcp-subdomain-claims.d.ts +2 -1
  91. package/node_modules/@noodle-borg/control-plane/dist/mcp-subdomain-claims.js +13 -8
  92. package/node_modules/@noodle-borg/control-plane/dist/organization-agreements.d.ts +13 -4
  93. package/node_modules/@noodle-borg/control-plane/dist/organization-agreements.js +23 -7
  94. package/node_modules/@noodle-borg/control-plane/dist/portable.d.ts +2 -1
  95. package/node_modules/@noodle-borg/control-plane/dist/portable.js +1 -0
  96. package/node_modules/@noodle-borg/module/dist/platform-human-identity.d.ts +5 -2
  97. package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +16 -4
  98. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +3 -6
  99. package/node_modules/@noodle-borg/runtime/dist/index.d.ts +1 -1
  100. package/node_modules/@noodle-borg/service/dist/application-activity.js +85 -63
  101. package/node_modules/@noodle-borg/service/dist/application-drafts/contracts.js +9 -0
  102. package/node_modules/@noodle-borg/service/dist/application-drafts/paths.js +2 -2
  103. package/node_modules/@noodle-borg/service/dist/application-runtime-target.js +1 -1
  104. package/node_modules/@noodle-borg/service/dist/business-information/contracts.d.ts +18 -4
  105. package/node_modules/@noodle-borg/service/dist/business-information/in-memory-business-pages.js +3 -5
  106. package/node_modules/@noodle-borg/service/dist/business-information/in-memory-installation-lifecycle.js +8 -6
  107. package/node_modules/@noodle-borg/service/dist/business-information/in-memory-native-lifecycle.js +80 -0
  108. package/node_modules/@noodle-borg/service/dist/business-information/in-memory-store.js +27 -31
  109. package/node_modules/@noodle-borg/service/dist/business-information/memory-native-retention.js +29 -0
  110. package/node_modules/@noodle-borg/service/dist/business-information/model.js +9 -2
  111. package/node_modules/@noodle-borg/service/dist/business-information/native-query.js +3 -1
  112. package/node_modules/@noodle-borg/service/dist/business-information/native-record-lifecycle.d.ts +27 -0
  113. package/node_modules/@noodle-borg/service/dist/business-information/native-record-lifecycle.js +63 -0
  114. package/node_modules/@noodle-borg/service/dist/business-information/principal-authority.d.ts +3 -1
  115. package/node_modules/@noodle-borg/service/dist/business-information/principal-authority.js +9 -4
  116. package/node_modules/@noodle-borg/service/dist/business-information/staff-authority.d.ts +16 -0
  117. package/node_modules/@noodle-borg/service/dist/business-information/staff-authority.js +60 -0
  118. package/node_modules/@noodle-borg/service/dist/business-information/workspace-permissions.js +18 -0
  119. package/node_modules/@noodle-borg/service/dist/business-information-runtime.js +1 -0
  120. package/node_modules/@noodle-borg/service/dist/business-onboarding.js +16 -3
  121. package/node_modules/@noodle-borg/service/dist/business-workspaces/contracts.d.ts +110 -0
  122. package/node_modules/@noodle-borg/service/dist/business-workspaces/contracts.js +52 -0
  123. package/node_modules/@noodle-borg/service/dist/business-workspaces/paths.js +17 -0
  124. package/node_modules/@noodle-borg/service/dist/business-workspaces/permissions.d.ts +7 -0
  125. package/node_modules/@noodle-borg/service/dist/business-workspaces/store.d.ts +102 -0
  126. package/node_modules/@noodle-borg/service/dist/channels/360dialog.js +70 -8
  127. package/node_modules/@noodle-borg/service/dist/channels/capability-report.js +73 -0
  128. package/node_modules/@noodle-borg/service/dist/channels/collection-turn.js +232 -0
  129. package/node_modules/@noodle-borg/service/dist/channels/composition.js +1 -0
  130. package/node_modules/@noodle-borg/service/dist/channels/messaging-eligibility.js +45 -0
  131. package/node_modules/@noodle-borg/service/dist/channels/reply-buttons.js +23 -0
  132. package/node_modules/@noodle-borg/service/dist/channels/runtime.js +127 -33
  133. package/node_modules/@noodle-borg/service/dist/native-record-connector.js +19 -4
  134. package/node_modules/@noodle-borg/service/dist/routes/application-drafts.js +44 -2
  135. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +4 -0
  136. package/node_modules/@noodle-borg/service/dist/routes/business-authoring-dispatch.js +23 -0
  137. package/node_modules/@noodle-borg/service/dist/routes/business-information-access.js +39 -0
  138. package/node_modules/@noodle-borg/service/dist/routes/business-information-activity.js +1 -1
  139. package/node_modules/@noodle-borg/service/dist/routes/business-information-channels.js +2 -2
  140. package/node_modules/@noodle-borg/service/dist/routes/business-information-connections.js +10 -4
  141. package/node_modules/@noodle-borg/service/dist/routes/business-information-dispatch.js +11 -6
  142. package/node_modules/@noodle-borg/service/dist/routes/business-information-installation.js +3 -1
  143. package/node_modules/@noodle-borg/service/dist/routes/business-information-notice.js +6 -2
  144. package/node_modules/@noodle-borg/service/dist/routes/business-information-pages.js +1 -1
  145. package/node_modules/@noodle-borg/service/dist/routes/business-information-paths.js +1 -1
  146. package/node_modules/@noodle-borg/service/dist/routes/business-information-record-create.js +7 -2
  147. package/node_modules/@noodle-borg/service/dist/routes/business-information-record-reads.js +2 -2
  148. package/node_modules/@noodle-borg/service/dist/routes/business-information-records.js +332 -0
  149. package/node_modules/@noodle-borg/service/dist/routes/business-information-settings.js +6 -3
  150. package/node_modules/@noodle-borg/service/dist/routes/business-information-staff.js +9 -5
  151. package/node_modules/@noodle-borg/service/dist/routes/business-information.js +12 -356
  152. package/node_modules/@noodle-borg/service/dist/routes/business-native-lifecycle.js +46 -0
  153. package/node_modules/@noodle-borg/service/dist/routes/business-workspaces.js +119 -0
  154. package/node_modules/@noodle-borg/service/dist/routes/service-probes.js +2 -1
  155. package/node_modules/@noodle-borg/service/dist/service.js +9 -2
  156. package/node_modules/@noodle-borg/service/dist/web-capabilities.js +3 -1
  157. package/node_modules/@noodle-borg/service/package.json +2 -1
  158. package/node_modules/@noodle-borg/wire-contracts/dist/application-draft-validation.d.ts +59 -0
  159. package/node_modules/@noodle-borg/wire-contracts/dist/application-draft-validation.js +38 -0
  160. package/node_modules/@noodle-borg/wire-contracts/dist/business-information.d.ts +144 -50
  161. package/node_modules/@noodle-borg/wire-contracts/dist/business-information.js +44 -4
  162. package/node_modules/@noodle-borg/wire-contracts/dist/business-workspaces.d.ts +258 -0
  163. package/node_modules/@noodle-borg/wire-contracts/dist/business-workspaces.js +118 -1
  164. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +2 -0
  165. package/node_modules/@noodle-borg/wire-contracts/dist/index.js +2 -0
  166. package/node_modules/@noodle-borg/wire-contracts/dist/native-record-lifecycle.d.ts +81 -0
  167. package/node_modules/@noodle-borg/wire-contracts/dist/native-record-lifecycle.js +39 -0
  168. package/node_modules/@noodle-borg/wire-contracts/dist/whatsapp.d.ts +26 -0
  169. package/node_modules/@noodle-borg/wire-contracts/dist/whatsapp.js +24 -1
  170. package/package.json +2 -2
@@ -1,6 +1,9 @@
1
1
  /** Provider-neutral embedded-assistant model transport. */
2
2
  export * from './assistant-model-context.js';
3
3
  export * from './assistant-suggestions.js';
4
+ export * from './collection-capture.js';
5
+ export * from './collection-judgment.js';
6
+ export * from './collection-model-call.js';
4
7
  export * from './model-error.js';
5
8
  export * from './model-probe.js';
6
9
  export * from './model-request.js';
@@ -24,6 +24,11 @@ export * from './channel-provider-blocks.js';
24
24
  export * from './channel-store.js';
25
25
  export * from './channel-types.js';
26
26
  export * from './channel-work.js';
27
+ export * from './collection-ledger.js';
28
+ export * from './collection-parsers.js';
29
+ export * from './collection-review.js';
30
+ export * from './collection-spec.js';
31
+ export * from './collection-store.js';
27
32
  export * from './continuity-bounds.js';
28
33
  export * from './continuity-store.js';
29
34
  export * from './elevation.js';
@@ -24,6 +24,11 @@ export * from './channel-provider-blocks.js';
24
24
  export * from './channel-store.js';
25
25
  export * from './channel-types.js';
26
26
  export * from './channel-work.js';
27
+ export * from './collection-ledger.js';
28
+ export * from './collection-parsers.js';
29
+ export * from './collection-review.js';
30
+ export * from './collection-spec.js';
31
+ export * from './collection-store.js';
27
32
  export * from './continuity-bounds.js';
28
33
  export * from './continuity-store.js';
29
34
  export * from './elevation.js';
@@ -12,6 +12,7 @@ export { type CustomerEndpointPolicy, type CustomerEndpointRef, customerEndpoint
12
12
  export type { DistributionImageSource, DistributionMetadataSource, DistributionMetadataV1, DistributionNegativeReviewScenarioSource, DistributionPositiveReviewScenarioSource, DistributionReviewScenarioSource, DistributionScreenshotSource, } from './distribution.js';
13
13
  export { gmailConnector } from './gmail.js';
14
14
  export { type HandoffPurpose, type HandoffSession, type HandoffStateHandleLink, handoffSession, } from './handoff.js';
15
+ export type { CollectControl, CollectFieldOptions, ToolInteractionOptions, } from './interaction.js';
15
16
  export { algolia, file, firecrawl, type KnowledgeCrawlerDeclaration, type KnowledgeIndexDeclaration, type KnowledgeInput, knowledge, meilisearch, site, tavily, } from './knowledge.js';
16
17
  export { type ManagedCollectionDeclaration, type ManagedCollectionInput, type ManagedCollectionSource, managedCollection, } from './managed-collection.js';
17
18
  export { noodlePlatform, noodlePlatformCatalog } from './platform.js';
@@ -0,0 +1,49 @@
1
+ import type { Manifest } from '@noodle-borg/compiler';
2
+ import type { ServerComponent } from './server.js';
3
+ /** Standard field controls every platform renderer supports (ADR 0240, tier 0). */
4
+ export type CollectControl = 'text' | 'textarea' | 'email' | 'phone' | 'url' | 'select' | 'consent';
5
+ export interface CollectFieldOptions {
6
+ /** An input property of the action tool. */
7
+ readonly key: string;
8
+ readonly control: CollectControl;
9
+ /**
10
+ * Never enters the conversation model, transcript, logs or diagnostics. Nothing is private by
11
+ * default; mark each field deliberately.
12
+ */
13
+ readonly private?: true;
14
+ /** The person may leave it blank; the renderer submits the schema's empty value. */
15
+ readonly optional?: true;
16
+ }
17
+ /**
18
+ * Bounded `collect` interaction metadata (ADR 0240): one definition that a platform renderer presents
19
+ * with the controls each channel has, a browser form or the tool's React `view` on the website and
20
+ * natural collection in chat on messaging channels. It describes meaning, never layout: which fields
21
+ * to collect for one confirmed action, which are private, what to review, and what to say on success.
22
+ */
23
+ export interface ToolInteractionOptions {
24
+ readonly kind: 'collect';
25
+ /** The confirmed action tool (`{ confirm: true }`, not read-only) this collection prepares. */
26
+ readonly action: ServerComponent;
27
+ /** Action input property -> this tool's output property that seeds it before collection starts. */
28
+ readonly initialValues?: Readonly<Record<string, {
29
+ readonly fromOutput: string;
30
+ }>>;
31
+ readonly fields: readonly CollectFieldOptions[];
32
+ /** Every collected value is reviewed verbatim before confirmation. */
33
+ readonly review: 'all';
34
+ /** Shown only after a known successful business outcome. */
35
+ readonly outcome: {
36
+ readonly success: string;
37
+ };
38
+ /** Shorten the channel profile's confirmation expiry (whole seconds); it can never be lengthened. */
39
+ readonly confirmationExpiry?: {
40
+ readonly seconds: number;
41
+ };
42
+ }
43
+ type ManifestToolInteraction = NonNullable<Extract<Manifest, {
44
+ manifestVersion: '2';
45
+ }>['tools'][number]['interaction']>;
46
+ /** Serialize the authored block to manifest data: the action by name, fields verbatim. */
47
+ export declare function manifestToolInteraction(toolName: string, interaction: ToolInteractionOptions): ManifestToolInteraction;
48
+ export {};
49
+ //# sourceMappingURL=interaction.d.ts.map
@@ -0,0 +1,25 @@
1
+ /** Serialize the authored block to manifest data: the action by name, fields verbatim. */
2
+ export function manifestToolInteraction(toolName, interaction) {
3
+ if (interaction.action.kind !== 'tool') {
4
+ throw new Error(`tool "${toolName}" interaction.action must be a tool component`);
5
+ }
6
+ return {
7
+ kind: 'collect',
8
+ action: interaction.action.name,
9
+ ...(interaction.initialValues === undefined
10
+ ? {}
11
+ : { initialValues: { ...interaction.initialValues } }),
12
+ fields: interaction.fields.map((field) => ({
13
+ key: field.key,
14
+ control: field.control,
15
+ ...(field.private === true ? { private: true } : {}),
16
+ ...(field.optional === true ? { optional: true } : {}),
17
+ })),
18
+ review: 'all',
19
+ outcome: { success: interaction.outcome.success },
20
+ ...(interaction.confirmationExpiry === undefined
21
+ ? {}
22
+ : { confirmationExpiry: { seconds: interaction.confirmationExpiry.seconds } }),
23
+ };
24
+ }
25
+ //# sourceMappingURL=interaction.js.map
@@ -8,6 +8,7 @@ import { type ConfigRef, type DeclaredVariableRef } from './config.js';
8
8
  import { type ConnectorCatalogDoc, type ConnectorRef } from './connectors.js';
9
9
  import { type ServerContextOptions } from './context.js';
10
10
  import { type CustomerAuth } from './customer-auth.js';
11
+ import { type ToolInteractionOptions } from './interaction.js';
11
12
  import { type JsonSchema } from './json-schema.js';
12
13
  import { type KnowledgeDeclaration } from './knowledge.js';
13
14
  import * as collections from './managed-collection.js';
@@ -158,6 +159,8 @@ export interface ToolOptions {
158
159
  readonly visibility?: ('model' | 'app')[];
159
160
  /** Optional MCP Apps presentation linked to this tool. A view is metadata, not another tool kind. */
160
161
  readonly view?: ToolViewOptions;
162
+ /** Bounded `collect` interaction this opener declares for one confirmed action (ADR 0240). */
163
+ readonly interaction?: ToolInteractionOptions;
161
164
  /** Stable view identity. Defaults to `<tool>_widget`. */
162
165
  readonly viewName?: string;
163
166
  readonly viewTitle?: string;
@@ -9,6 +9,7 @@ import { toManifestConnectorRef } from './connections.js';
9
9
  import { validateCatalog } from './connectors.js';
10
10
  import { manifestContext } from './context.js';
11
11
  import { manifestCustomerAuth } from './customer-auth.js';
12
+ import { manifestToolInteraction } from './interaction.js';
12
13
  import { toJsonSchema } from './json-schema.js';
13
14
  import { manifestKnowledge } from './knowledge.js';
14
15
  import * as collections from './managed-collection.js';
@@ -149,6 +150,9 @@ class ServerBuilder {
149
150
  ...(tool.options.output ? { outputSchema: toJsonSchema(tool.options.output) } : {}),
150
151
  ...manifestToolAnnotations(tool.options),
151
152
  ...(tool.options.visibility?.length ? { visibility: [...tool.options.visibility] } : {}),
153
+ ...(tool.options.interaction
154
+ ? { interaction: manifestToolInteraction(tool.name, tool.options.interaction) }
155
+ : {}),
152
156
  fulfilment: {
153
157
  steps: recorded.steps,
154
158
  output: recorded.output,
@@ -20,16 +20,21 @@
20
20
  "./load-authored": {
21
21
  "types": "./dist/load-authored.d.ts",
22
22
  "import": "./dist/load-authored.js"
23
+ },
24
+ "./sandbox-authoring": {
25
+ "types": "./dist/sandbox-authoring.d.ts",
26
+ "import": "./dist/sandbox-authoring.js"
23
27
  }
24
28
  },
25
29
  "files": [
26
30
  "dist"
27
31
  ],
28
32
  "scripts": {
29
- "build": "tsc -p tsconfig.json",
33
+ "build": "tsc -p tsconfig.json && node ../../scripts/build-authoring-sandbox.mjs",
30
34
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.type-tests.json --noEmit"
31
35
  },
32
36
  "dependencies": {
37
+ "@noodle-borg/compute": "0.0.0",
33
38
  "@noodle-borg/managed-capabilities": "0.0.0",
34
39
  "typescript": "^6.0.3",
35
40
  "@noodle-borg/compiler": "0.0.0",
@@ -60,7 +60,7 @@ export const CHANNELS_COMMAND = {
60
60
  flag('support-email', 'Contact shown when an answer cannot be completed.'),
61
61
  ...limits,
62
62
  ]),
63
- leaf('doctor', 'Check deployment, storage, worker, model cost bound, and provider setup.', mutation),
63
+ leaf('doctor', 'Check deployment, storage, worker, model cost bound, provider setup, and capability compatibility.', mutation),
64
64
  leaf('enable', 'Enable after a successful current readiness check.', [
65
65
  revision,
66
66
  ...mutation,
@@ -37,6 +37,13 @@ export const SOLUTION_DRAFTS = {
37
37
  arguments: [],
38
38
  flags: [],
39
39
  subcommands: [
40
+ {
41
+ name: 'validate',
42
+ summary: 'Check an exact saved TypeScript revision without executing actions or publishing.',
43
+ arguments: [draftId],
44
+ flags: [...common, revision],
45
+ jsonOutput: { mode: 'single' },
46
+ },
40
47
  {
41
48
  name: 'history',
42
49
  summary: 'List source-free revisions, newest first.',
@@ -0,0 +1,43 @@
1
+ /** Native-record lifecycle review; no automatic data migration. */
2
+ import { INSTALLATION_ARGUMENT, OPTIONAL_FLAG, SOLUTION_COMMON_FLAGS, } from './catalog-data-solution-flags.js';
3
+ const common = SOLUTION_COMMON_FLAGS.map((flag) => flag.name === 'org' ? { ...flag, required: true } : flag);
4
+ export const SOLUTION_NATIVE_LIFECYCLE = {
5
+ name: 'lifecycle',
6
+ summary: 'Review and explicitly preserve available native records until erasure.',
7
+ arguments: [],
8
+ flags: [],
9
+ subcommands: [
10
+ {
11
+ name: 'preview',
12
+ summary: 'Inspect current policy and preservation counts without changing records.',
13
+ arguments: [INSTALLATION_ARGUMENT],
14
+ flags: common,
15
+ jsonOutput: { mode: 'single' },
16
+ },
17
+ {
18
+ name: 'migrate',
19
+ summary: 'Apply a reviewed one-way migration; never restore expired or erased records.',
20
+ arguments: [INSTALLATION_ARGUMENT],
21
+ flags: [
22
+ ...common,
23
+ {
24
+ ...OPTIONAL_FLAG,
25
+ name: 'preview',
26
+ type: 'string',
27
+ value: '<json>',
28
+ required: true,
29
+ summary: 'Exact preview data JSON, valid for five minutes and only while the reviewed inventory is unchanged.',
30
+ },
31
+ {
32
+ ...OPTIONAL_FLAG,
33
+ name: 'confirm',
34
+ type: 'boolean',
35
+ required: true,
36
+ summary: 'Confirm preserving available and future records until explicit erasure. Activity history is unchanged.',
37
+ },
38
+ ],
39
+ jsonOutput: { mode: 'single' },
40
+ },
41
+ ],
42
+ };
43
+ //# sourceMappingURL=catalog-data-solution-native-lifecycle.js.map
@@ -0,0 +1,154 @@
1
+ /** Canonical record operations and reviewed lifecycle metadata. Pure data only. */
2
+ import { INSTALLATION_ARGUMENT, OPTIONAL_FLAG, PAGING_FLAGS, REQUIRED_ARGUMENT, SOLUTION_COMMON_FLAGS, } from './catalog-data-solution-flags.js';
3
+ import { SOLUTION_NATIVE_LIFECYCLE } from './catalog-data-solution-native-lifecycle.js';
4
+ export const COLLECTION_ARGUMENT = {
5
+ ...REQUIRED_ARGUMENT,
6
+ name: 'collection',
7
+ summary: 'Managed collection key.',
8
+ };
9
+ const RECORD_ARGUMENT = {
10
+ ...REQUIRED_ARGUMENT,
11
+ name: 'record',
12
+ summary: 'Managed record identifier.',
13
+ };
14
+ const RECORD_QUERY_FLAGS = [
15
+ {
16
+ ...OPTIONAL_FLAG,
17
+ name: 'filters',
18
+ type: 'string',
19
+ value: '<json>',
20
+ summary: 'JSON array of up to eight field/value equality filters, combined with AND. Only declared fields.',
21
+ },
22
+ {
23
+ ...OPTIONAL_FLAG,
24
+ name: 'sort-field',
25
+ type: 'string',
26
+ value: '<field>',
27
+ summary: 'Declared native collection sort field.',
28
+ },
29
+ {
30
+ ...OPTIONAL_FLAG,
31
+ name: 'sort-direction',
32
+ type: 'string',
33
+ value: '<asc|desc>',
34
+ summary: 'Sort direction; requires --sort-field.',
35
+ },
36
+ {
37
+ ...OPTIONAL_FLAG,
38
+ name: 'created-at-from',
39
+ type: 'string',
40
+ value: '<timestamp>',
41
+ summary: 'Inclusive creation-time lower bound; narrows the 10,000-record payload-query scan.',
42
+ },
43
+ {
44
+ ...OPTIONAL_FLAG,
45
+ name: 'created-at-to',
46
+ type: 'string',
47
+ value: '<timestamp>',
48
+ summary: 'Inclusive creation-time upper bound.',
49
+ },
50
+ ];
51
+ const RECORD_FLAGS = [
52
+ ...SOLUTION_COMMON_FLAGS,
53
+ {
54
+ ...OPTIONAL_FLAG,
55
+ name: 'data',
56
+ type: 'string',
57
+ value: '<json>',
58
+ summary: 'Structured JSON record data.',
59
+ },
60
+ {
61
+ ...OPTIONAL_FLAG,
62
+ name: 'idempotency-key',
63
+ type: 'string',
64
+ value: '<key>',
65
+ summary: 'Retry-safe create key.',
66
+ },
67
+ {
68
+ ...OPTIONAL_FLAG,
69
+ name: 'expected-revision',
70
+ type: 'integer',
71
+ value: '<revision>',
72
+ summary: 'Expected current record revision.',
73
+ },
74
+ {
75
+ ...OPTIONAL_FLAG,
76
+ name: 'status',
77
+ type: 'string',
78
+ value: '<status>',
79
+ summary: 'Record status or list filter.',
80
+ },
81
+ {
82
+ ...OPTIONAL_FLAG,
83
+ name: 'assignee',
84
+ type: 'string',
85
+ value: '<subject>',
86
+ summary: 'Assignee subject or list filter.',
87
+ },
88
+ {
89
+ ...OPTIONAL_FLAG,
90
+ name: 'note',
91
+ type: 'string',
92
+ value: '<text>',
93
+ summary: 'Operator note text.',
94
+ },
95
+ ...PAGING_FLAGS,
96
+ {
97
+ ...OPTIONAL_FLAG,
98
+ name: 'include-deleted',
99
+ type: 'boolean',
100
+ summary: 'Include payload-free tombstones.',
101
+ },
102
+ ];
103
+ export const SOLUTION_RECORDS = {
104
+ name: 'records',
105
+ summary: 'Operate one installed managed collection.',
106
+ arguments: [],
107
+ flags: [],
108
+ usage: 'solutions records <list|create|get|update|assign|status|note|activity|delete|migrate-schema|export|lifecycle> [options]',
109
+ subcommands: [
110
+ SOLUTION_NATIVE_LIFECYCLE,
111
+ ...[
112
+ 'list',
113
+ 'create',
114
+ 'get',
115
+ 'update',
116
+ 'assign',
117
+ 'status',
118
+ 'note',
119
+ 'activity',
120
+ 'delete',
121
+ 'migrate-schema',
122
+ 'export',
123
+ ].map((name) => ({
124
+ name,
125
+ summary: name === 'activity'
126
+ ? 'Read native record history newest first; default 50, maximum 100, with --cursor for older pages.'
127
+ : name === 'migrate-schema'
128
+ ? 'Administrator-only conversion of an eligible legacy request record with revision protection.'
129
+ : `${name[0]?.toUpperCase()}${name.slice(1)} managed records.`,
130
+ arguments: [
131
+ INSTALLATION_ARGUMENT,
132
+ COLLECTION_ARGUMENT,
133
+ ...(name === 'list' || name === 'create' || name === 'export' ? [] : [RECORD_ARGUMENT]),
134
+ ],
135
+ flags: [
136
+ ...RECORD_FLAGS,
137
+ ...(name === 'list' ? RECORD_QUERY_FLAGS : []),
138
+ ...(name === 'update'
139
+ ? [
140
+ {
141
+ ...OPTIONAL_FLAG,
142
+ name: 'unset',
143
+ type: 'string',
144
+ value: '<fields>',
145
+ summary: 'Comma-separated optional field keys to remove; cannot overlap --data. May be used without --data.',
146
+ },
147
+ ]
148
+ : []),
149
+ ],
150
+ jsonOutput: { mode: 'single' },
151
+ })),
152
+ ],
153
+ };
154
+ //# sourceMappingURL=catalog-data-solution-records.js.map
@@ -0,0 +1,95 @@
1
+ /** Fixed-role workspace administration. No execution or business permission authority lives here. */
2
+ import { EXPECTED_REVISION, OPTIONAL_FLAG, PAGING_FLAGS, SOLUTION_COMMON_FLAGS, } from './catalog-data-solution-flags.js';
3
+ const common = SOLUTION_COMMON_FLAGS.map((flag) => flag.name === 'org' ? { ...flag, required: true } : flag);
4
+ const confirm = {
5
+ ...OPTIONAL_FLAG,
6
+ name: 'confirm',
7
+ type: 'boolean',
8
+ required: true,
9
+ summary: 'Confirm this workspace access change.',
10
+ };
11
+ const value = (name, summary) => ({
12
+ ...OPTIONAL_FLAG,
13
+ name,
14
+ summary,
15
+ type: 'string',
16
+ required: true,
17
+ value: '<value>',
18
+ });
19
+ const role = {
20
+ ...value('role', 'One fixed workspace role.'),
21
+ constraints: { choices: ['owner', 'administrator', 'builder', 'operator', 'viewer'] },
22
+ };
23
+ const subject = value('subject', 'Canonical member subject from workspace show.');
24
+ export const SOLUTION_WORKSPACE = {
25
+ name: 'workspace',
26
+ summary: 'Inspect and administer versioned business workspace access.',
27
+ arguments: [],
28
+ flags: [],
29
+ subcommands: [
30
+ {
31
+ name: 'list',
32
+ summary: 'Discover your current business workspaces without developer organization access.',
33
+ arguments: [],
34
+ flags: [...SOLUTION_COMMON_FLAGS.filter((flag) => flag.name !== 'org'), ...PAGING_FLAGS],
35
+ jsonOutput: { mode: 'single' },
36
+ },
37
+ {
38
+ name: 'show',
39
+ summary: 'Inspect current workspace members, permissions and pending invitations.',
40
+ arguments: [],
41
+ flags: common,
42
+ jsonOutput: { mode: 'single' },
43
+ },
44
+ {
45
+ name: 'invite',
46
+ summary: 'Create a seven-day invitation; the one-time token is returned only here.',
47
+ arguments: [],
48
+ flags: [
49
+ ...common,
50
+ EXPECTED_REVISION,
51
+ value('email', 'Verified email address that may claim this invitation.'),
52
+ { ...role, required: false, constraints: { ...role.constraints, default: 'operator' } },
53
+ ],
54
+ jsonOutput: { mode: 'single' },
55
+ },
56
+ {
57
+ name: 'set-role',
58
+ summary: 'Change a member role under current delegation and last-Owner checks.',
59
+ arguments: [],
60
+ flags: [...common, EXPECTED_REVISION, subject, role, confirm],
61
+ jsonOutput: { mode: 'single' },
62
+ },
63
+ {
64
+ name: 'remove',
65
+ summary: 'Remove a workspace member without removing the last Owner.',
66
+ arguments: [],
67
+ flags: [...common, EXPECTED_REVISION, subject, confirm],
68
+ jsonOutput: { mode: 'single' },
69
+ },
70
+ {
71
+ name: 'revoke-invitation',
72
+ summary: 'Revoke an unclaimed invitation.',
73
+ arguments: [],
74
+ flags: [
75
+ ...common,
76
+ EXPECTED_REVISION,
77
+ value('invitation', 'Invitation ID from workspace show.'),
78
+ confirm,
79
+ ],
80
+ jsonOutput: { mode: 'single' },
81
+ },
82
+ {
83
+ name: 'accept',
84
+ summary: 'Claim an invitation using the signed-in verified email.',
85
+ arguments: [],
86
+ flags: [
87
+ ...common,
88
+ value('token-from-env', 'Environment variable containing the one-time invitation token; not the token itself.'),
89
+ confirm,
90
+ ],
91
+ jsonOutput: { mode: 'single' },
92
+ },
93
+ ],
94
+ };
95
+ //# sourceMappingURL=catalog-data-solution-workspace.js.map