@absolutejs/mcp 0.17.9 → 0.19.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.
@@ -33,3 +33,6 @@ export declare const appResourceContent: (resource: McpAppResource, uri: string)
33
33
  };
34
34
  };
35
35
  export { createBillingApps } from "./billingApps";
36
+ export { createWorkflowApps } from "./workflowApps";
37
+ export { createWorkflowTools, projectSetupStatus, projectWorkPreview, type McpSetupStatus, type McpWorkPreview, type McpWorkPreviewRequest, } from "./workflowTools";
38
+ export { createSetupSelectionTools, projectSetupSelection, type SetupSelection, type SetupConfirmation, type SetupOption, } from "./setupSelection";
@@ -49,3 +49,6 @@ export { createCheckoutHandoffTool, createPurchaseStatusTool, type McpPurchaseSt
49
49
  export { createBillingReportTools, createBillingManagementTool, } from "./billingTools";
50
50
  export { MCP_APP_MIME, clientSupportsMcpApps, withMcpApp, type McpAppResource, type McpAppsConfig, } from "./apps";
51
51
  export { createBillingApps } from "./billingApps";
52
+ export { createWorkflowApps } from "./workflowApps";
53
+ export { createWorkflowTools, projectSetupStatus, projectWorkPreview, type McpSetupStatus, type McpWorkPreview, type McpWorkPreviewRequest, } from "./workflowTools";
54
+ export { createSetupSelectionTools, projectSetupSelection, type SetupSelection, type SetupConfirmation, type SetupOption, } from "./setupSelection";
@@ -0,0 +1,23 @@
1
+ import type { McpToolRegistry } from "./types";
2
+ export type SetupOption = {
3
+ id: string;
4
+ label: string;
5
+ };
6
+ export type SetupSelection = {
7
+ revision: string;
8
+ selectedId: string | null;
9
+ options: SetupOption[];
10
+ };
11
+ export type SetupConfirmation = {
12
+ expectedRevision: string;
13
+ selectedId: string | null;
14
+ };
15
+ export declare const projectSetupSelection: (value: unknown) => SetupSelection;
16
+ /** Bind to the authenticated owner. confirm MUST atomically compare the revision,
17
+ * validate option ownership, change selection and advance the revision. All
18
+ * writers must advance it, including A→B→A. Retries with an old revision fail
19
+ * without effects. Recover by reading; never auto-retry against a new revision. */
20
+ export declare const createSetupSelectionTools: (adapter: {
21
+ read: () => Promise<SetupSelection>;
22
+ confirm: (request: SetupConfirmation) => Promise<SetupSelection>;
23
+ }) => McpToolRegistry;
@@ -0,0 +1 @@
1
+ export declare const setupSelectionScript: string;
@@ -0,0 +1,2 @@
1
+ export declare const workflowAppScript: string;
2
+ export declare const workflowAppCss: string;
@@ -0,0 +1,6 @@
1
+ import { type McpAppResource } from "./apps";
2
+ import type { McpToolRegistry } from "./types";
3
+ export declare const createWorkflowApps: () => {
4
+ resources: Record<string, McpAppResource>;
5
+ decorateTools: (tools: McpToolRegistry) => McpToolRegistry;
6
+ };
@@ -0,0 +1,26 @@
1
+ import type { McpToolRegistry } from "./types";
2
+ export type McpSetupStatus = {
3
+ business: string | null;
4
+ businessCount: number;
5
+ portalAccess: boolean;
6
+ availableCredits: number;
7
+ };
8
+ export type McpWorkPreviewRequest = {
9
+ operation: string;
10
+ maxCredits: number;
11
+ };
12
+ export type McpWorkPreview = McpWorkPreviewRequest & {
13
+ summary: string;
14
+ availableCredits: number;
15
+ eligible: boolean;
16
+ reason: string;
17
+ };
18
+ export declare const projectSetupStatus: (value: unknown) => McpSetupStatus;
19
+ export declare const projectWorkPreview: (value: unknown) => McpWorkPreview;
20
+ /** Readers must close over the authenticated identity. No executor, reservation,
21
+ * checkout or account-selector callback belongs in this read-only contract. */
22
+ export declare const createWorkflowTools: (readers: {
23
+ setup: () => Promise<McpSetupStatus>;
24
+ operations: readonly string[];
25
+ preview: (request: McpWorkPreviewRequest) => Promise<McpWorkPreview>;
26
+ }) => McpToolRegistry;
@@ -296,3 +296,75 @@ reviewed individual Copilot direct-MCP channel. Deployments must bind the exact
296
296
  registration/account and enforce budgets, retries and recovery. It expires
297
297
  October 12, 2026. It does not enable the shared default or expand checkout,
298
298
  organization-account or other-host eligibility.
299
+
300
+ ## Launch evidence checklist — September 12, 2026
301
+
302
+ This checklist separates reusable package guarantees from deployment activation.
303
+ The September 10 survey remains the full host inventory; this follow-up rechecked
304
+ the highest-priority restrictions and existing Copilot review boundary. It does
305
+ not certify the untested hosts or broaden any executable commerce profile.
306
+
307
+ ### Current source checks
308
+
309
+ - Claude still documents purchases through interactive connectors as unsupported.
310
+ Its help page does not settle the separate external credit-checkout question.
311
+ Keep that flow unverified pending clarification; non-commerce report rendering
312
+ is a separate capability. [Claude help](https://support.claude.com/en/articles/13454812-use-interactive-connectors-in-claude).
313
+ - ChatGPT plugin guidelines still exclude digital-credit sales and transactional
314
+ links. Entitlement explanations and informational destinations are distinct
315
+ from purchase initiation. Do not turn an informational destination into an
316
+ automatic checkout redirect. [Plugin guidelines](https://developers.openai.com/plugins/app-guidelines#commerce-and-monetization).
317
+ - Direct Codex documents remote MCP and OAuth. That technical documentation alone
318
+ does not establish commerce eligibility for a particular account/distribution.
319
+ Keep its separate review pending; neither automatically apply hosted-plugin
320
+ rules to every direct connection nor infer an exemption.
321
+ [Direct MCP documentation](https://learn.chatgpt.com/docs/extend/mcp?surface=cli).
322
+ - Cursor Marketplace still excludes direct and indirect plugin-access fees in
323
+ section 3.1. Review directly configured MCP separately; a working connection
324
+ does not resolve the marketplace restriction.
325
+ [Publisher terms](https://cursor.com/marketplace-publisher-terms).
326
+ - GitHub still directs individual Copilot users to ToS section J and Business /
327
+ Enterprise users to different terms. The two scoped individual Copilot reviews
328
+ remain the package's interpretation, expiring October 12, 2026; this check
329
+ does not extend their expiry or authorize organization accounts.
330
+ [Applicable agreements](https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot).
331
+ - VS Code issue #335908 remains open. Retain the tested affected-version fallback
332
+ until a released editor passes the documented fresh-load and remount tests.
333
+ [Upstream issue](https://github.com/microsoft/vscode/issues/335908).
334
+
335
+ ### Evidence required for each advertised host
336
+
337
+ | Gate | Required evidence | Owner |
338
+ | --- | --- | --- |
339
+ | Distribution and policy | Exact host surface, account agreement, category, actions, official sources, dated interpretation and expiry | Package review; deployment supplies verified binding |
340
+ | Authentication | Real signup/consent return, exact registration/account, refresh, revoked access and cross-account rejection | Auth package primitives and consumer integration |
341
+ | Presentation | Installed version, actual negotiated capabilities, visible first load, refresh, pagination and text fallback | MCP package fixture; real host test |
342
+ | Funded access | Subscription-free access, portal denial, explicit budget, settlement, retry conflict and recovery at zero | Billing package and consumer services |
343
+ | Checkout, if eligible | Own HTTPS origin, explicit browser confirmation, server-priced intent, idempotent grant and uncertain-outcome recovery | Shared handoff plus consumer gateway |
344
+ | Work effects | Immutable approval version, ownership, expiry, repeat-safe execution and durable status; rendering performs no action | Shared workflow contract and consumer handler |
345
+ | Operations | Manual or automated validation, deployment readiness, reconciliation, support procedure and rollback preserving financial records | Consumer deployment |
346
+
347
+ Mark each gate **passed**, **qualified**, **pending** or **not offered**, with a
348
+ link to evidence. A successful report fixture is not OAuth certification; a
349
+ successful payment is not proof of paid model metering. Never count a member or
350
+ complimentary account as a production subscription-free canary. No additional
351
+ live charge is required merely to review or document a host.
352
+
353
+ The package commerce regression suite was rerun: 18 tests / 43 assertions passed,
354
+ including discovery/execution guards, policy rechecks, restrictive profile
355
+ intersection, expiry, spoofed metadata and failure handling. This is regression
356
+ evidence for the policy mechanism, not vendor approval or a live host test.
357
+
358
+ ### Recommended implementation order for consumers
359
+
360
+ Build non-commerce setup and work previews using shared Apps primitives and
361
+ identical structured/text contracts first. Then add version-bound approval and
362
+ durable results, followed by attributed spend/outcome reporting. Bind each
363
+ consumer's domain services rather than duplicating policy, ledger or bridge
364
+ code. Test an eligible conversational, IDE and terminal channel separately;
365
+ record unavailable hosts as pending. Keep deferred background effects outside
366
+ bounded work until their reservation and recovery lifecycle is implemented.
367
+
368
+ This documentation update changes no runtime API, profile, feature flag or
369
+ published package version. It is available in the shared repository and will
370
+ ship with the next package release through the existing documentation allowlist.
package/docs/mcp-apps.md CHANGED
@@ -58,3 +58,46 @@ Primary references checked September 11, 2026: [stable Apps specification](https
58
58
  ## Real-host canaries
59
59
 
60
60
  See [the reusable host canary and observed results](host-canaries.md) for isolated connection instructions, acceptance criteria and remaining rollout gates.
61
+
62
+ ## Read-only setup and work previews
63
+
64
+ `createWorkflowTools` binds authenticated setup and preview readers; `createWorkflowApps`
65
+ decorates those tools and supplies offline resources. Merge its resources into the
66
+ server Apps configuration alongside billing resources. Both tools return text and
67
+ projected structured data when no Apps capability is negotiated. Setup reports
68
+ business context, portal access and available credits. Preview requires an allowed
69
+ operation and a positive proposed maximum, reports current eligibility, and never
70
+ reserves or executes. A maximum is not a price estimate or approval.
71
+
72
+ Readers must close over the authenticated account and resolve domain ownership.
73
+ Unknown operations and extra arguments (including account IDs) reject before reads.
74
+ The package strips extra reader fields. There is no executor callback. Consumers
75
+ keep these tools outside the zero-credit work gate with a bounded read rate limit.
76
+ Execution independently validates authorization, balance, stable work ID and budget.
77
+ Neither view contains checkout links, setup mutations or outbound actions.
78
+
79
+ The official Apps bridge delivers initial results without automatic tool calls.
80
+ Only explicit Refresh invokes the same read tool; preview refresh preserves the
81
+ operation and budget. Errors clear stale eligibility and point back to the assistant.
82
+ Known affected VS Code builds retain the shared text fallback. The visible-browser
83
+ fixture is `bun test/fixtures/workflowServer.ts` (loopback port 4418); it uses zero
84
+ credits and no gateway or database.
85
+
86
+ ### Reviewed setup selection
87
+
88
+ `createSetupSelectionTools({ read, confirm })` exposes `get_setup_options` and
89
+ `confirm_setup_selection`; `createWorkflowApps()` supplies the selection view.
90
+ The adapter returns `{ revision, selectedId, options: [{ id, label }] }`, with
91
+ `null` selecting all businesses. It must bind the authenticated account itself.
92
+ `confirm({ expectedRevision, selectedId })` must atomically compare the reviewed
93
+ revision, validate ownership, change selection, and advance the revision. Every
94
+ other selection writer must advance it too, including A → B → A. The package
95
+ validates and projects values but cannot provide database atomicity for adapters.
96
+
97
+ The view makes no call on mount. Review and Cancel are local; Confirm sends the
98
+ exact reviewed revision and selection once. Errors discard review state and
99
+ require a fresh read. Text-only hosts receive the same options/revision and must
100
+ obtain explicit approval before invoking the write tool. This is a reversible
101
+ setup action with no billing or outbound effects; it does not authorize paid
102
+ work. At most 200 options are supported; IDs/revisions are bounded at 128
103
+ characters and labels at 512. No account selector or credentials enter the view.
package/package.json CHANGED
@@ -90,5 +90,5 @@
90
90
  "canary:checkout": "bun canary/checkout.ts"
91
91
  },
92
92
  "types": "./dist/src/index.d.ts",
93
- "version": "0.17.9"
93
+ "version": "0.19.0"
94
94
  }