@mercuryo-ai/magicpay-cli 0.1.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 (144) hide show
  1. package/README.md +56 -0
  2. package/dist/agentbrowse-assistive.d.ts +2 -0
  3. package/dist/agentbrowse-assistive.d.ts.map +1 -0
  4. package/dist/agentbrowse-assistive.js +66 -0
  5. package/dist/assistive-llm-client.d.ts +13 -0
  6. package/dist/assistive-llm-client.d.ts.map +1 -0
  7. package/dist/assistive-llm-client.js +152 -0
  8. package/dist/browser-bridge/act.d.ts +5 -0
  9. package/dist/browser-bridge/act.d.ts.map +1 -0
  10. package/dist/browser-bridge/act.js +8 -0
  11. package/dist/browser-bridge/observe.d.ts +5 -0
  12. package/dist/browser-bridge/observe.d.ts.map +1 -0
  13. package/dist/browser-bridge/observe.js +53 -0
  14. package/dist/browser-home.d.ts +7 -0
  15. package/dist/browser-home.d.ts.map +1 -0
  16. package/dist/browser-home.js +34 -0
  17. package/dist/commands/act.d.ts +5 -0
  18. package/dist/commands/act.d.ts.map +1 -0
  19. package/dist/commands/act.js +8 -0
  20. package/dist/commands/attach.d.ts +4 -0
  21. package/dist/commands/attach.d.ts.map +1 -0
  22. package/dist/commands/attach.js +10 -0
  23. package/dist/commands/browser-status.d.ts +5 -0
  24. package/dist/commands/browser-status.d.ts.map +1 -0
  25. package/dist/commands/browser-status.js +5 -0
  26. package/dist/commands/close.d.ts +4 -0
  27. package/dist/commands/close.d.ts.map +1 -0
  28. package/dist/commands/close.js +11 -0
  29. package/dist/commands/end-session.d.ts +22 -0
  30. package/dist/commands/end-session.d.ts.map +1 -0
  31. package/dist/commands/end-session.js +104 -0
  32. package/dist/commands/extract.d.ts +4 -0
  33. package/dist/commands/extract.d.ts.map +1 -0
  34. package/dist/commands/extract.js +14 -0
  35. package/dist/commands/fill-secret.d.ts +10 -0
  36. package/dist/commands/fill-secret.d.ts.map +1 -0
  37. package/dist/commands/fill-secret.js +483 -0
  38. package/dist/commands/find-form.d.ts +57 -0
  39. package/dist/commands/find-form.d.ts.map +1 -0
  40. package/dist/commands/find-form.js +138 -0
  41. package/dist/commands/get-secrets-catalog.d.ts +13 -0
  42. package/dist/commands/get-secrets-catalog.d.ts.map +1 -0
  43. package/dist/commands/get-secrets-catalog.js +103 -0
  44. package/dist/commands/init.d.ts +10 -0
  45. package/dist/commands/init.d.ts.map +1 -0
  46. package/dist/commands/init.js +28 -0
  47. package/dist/commands/launch.d.ts +4 -0
  48. package/dist/commands/launch.d.ts.map +1 -0
  49. package/dist/commands/launch.js +10 -0
  50. package/dist/commands/mock-approve-secret.d.ts +21 -0
  51. package/dist/commands/mock-approve-secret.d.ts.map +1 -0
  52. package/dist/commands/mock-approve-secret.js +69 -0
  53. package/dist/commands/mock-deny-secret.d.ts +21 -0
  54. package/dist/commands/mock-deny-secret.d.ts.map +1 -0
  55. package/dist/commands/mock-deny-secret.js +69 -0
  56. package/dist/commands/navigate.d.ts +4 -0
  57. package/dist/commands/navigate.d.ts.map +1 -0
  58. package/dist/commands/navigate.js +9 -0
  59. package/dist/commands/observe.d.ts +5 -0
  60. package/dist/commands/observe.d.ts.map +1 -0
  61. package/dist/commands/observe.js +53 -0
  62. package/dist/commands/poll-secret.d.ts +13 -0
  63. package/dist/commands/poll-secret.d.ts.map +1 -0
  64. package/dist/commands/poll-secret.js +87 -0
  65. package/dist/commands/request-secret.d.ts +15 -0
  66. package/dist/commands/request-secret.d.ts.map +1 -0
  67. package/dist/commands/request-secret.js +235 -0
  68. package/dist/commands/screenshot.d.ts +4 -0
  69. package/dist/commands/screenshot.d.ts.map +1 -0
  70. package/dist/commands/screenshot.js +11 -0
  71. package/dist/commands/solve-captcha.d.ts +19 -0
  72. package/dist/commands/solve-captcha.d.ts.map +1 -0
  73. package/dist/commands/solve-captcha.js +63 -0
  74. package/dist/commands/start-session.d.ts +28 -0
  75. package/dist/commands/start-session.d.ts.map +1 -0
  76. package/dist/commands/start-session.js +298 -0
  77. package/dist/commands/status.d.ts +27 -0
  78. package/dist/commands/status.d.ts.map +1 -0
  79. package/dist/commands/status.js +51 -0
  80. package/dist/commands/submit-form.d.ts +36 -0
  81. package/dist/commands/submit-form.d.ts.map +1 -0
  82. package/dist/commands/submit-form.js +242 -0
  83. package/dist/config.d.ts +2 -0
  84. package/dist/config.d.ts.map +1 -0
  85. package/dist/config.js +1 -0
  86. package/dist/fillable-form-state.d.ts +5 -0
  87. package/dist/fillable-form-state.d.ts.map +1 -0
  88. package/dist/fillable-form-state.js +22 -0
  89. package/dist/gateway.d.ts +10 -0
  90. package/dist/gateway.d.ts.map +1 -0
  91. package/dist/gateway.js +49 -0
  92. package/dist/generated/build-config.d.ts +2 -0
  93. package/dist/generated/build-config.d.ts.map +1 -0
  94. package/dist/generated/build-config.js +2 -0
  95. package/dist/index.d.ts +4 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +398 -0
  98. package/dist/mock-secret-cabinet.d.ts +37 -0
  99. package/dist/mock-secret-cabinet.d.ts.map +1 -0
  100. package/dist/mock-secret-cabinet.js +321 -0
  101. package/dist/mock-secret-store.d.ts +12 -0
  102. package/dist/mock-secret-store.d.ts.map +1 -0
  103. package/dist/mock-secret-store.js +108 -0
  104. package/dist/mock-stored-secrets.json +180 -0
  105. package/dist/otel-exporter.d.ts +58 -0
  106. package/dist/otel-exporter.d.ts.map +1 -0
  107. package/dist/otel-exporter.js +241 -0
  108. package/dist/otel-projector.d.ts +59 -0
  109. package/dist/otel-projector.d.ts.map +1 -0
  110. package/dist/otel-projector.js +325 -0
  111. package/dist/output.d.ts +10 -0
  112. package/dist/output.d.ts.map +1 -0
  113. package/dist/output.js +29 -0
  114. package/dist/package-version.d.ts +2 -0
  115. package/dist/package-version.d.ts.map +1 -0
  116. package/dist/package-version.js +14 -0
  117. package/dist/protected-exposure.d.ts +4 -0
  118. package/dist/protected-exposure.d.ts.map +1 -0
  119. package/dist/protected-exposure.js +17 -0
  120. package/dist/request-output.d.ts +4 -0
  121. package/dist/request-output.d.ts.map +1 -0
  122. package/dist/request-output.js +27 -0
  123. package/dist/run-store.d.ts +130 -0
  124. package/dist/run-store.d.ts.map +1 -0
  125. package/dist/run-store.js +245 -0
  126. package/dist/secret-backend.d.ts +28 -0
  127. package/dist/secret-backend.d.ts.map +1 -0
  128. package/dist/secret-backend.js +335 -0
  129. package/dist/secret-state.d.ts +7 -0
  130. package/dist/secret-state.d.ts.map +1 -0
  131. package/dist/secret-state.js +26 -0
  132. package/dist/session-backend.d.ts +34 -0
  133. package/dist/session-backend.d.ts.map +1 -0
  134. package/dist/session-backend.js +36 -0
  135. package/dist/update-check.d.ts +13 -0
  136. package/dist/update-check.d.ts.map +1 -0
  137. package/dist/update-check.js +175 -0
  138. package/dist/workflow-session-completion.d.ts +32 -0
  139. package/dist/workflow-session-completion.d.ts.map +1 -0
  140. package/dist/workflow-session-completion.js +149 -0
  141. package/dist/workflow-state.d.ts +2 -0
  142. package/dist/workflow-state.d.ts.map +1 -0
  143. package/dist/workflow-state.js +1 -0
  144. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-session-completion.d.ts","sourceRoot":"","sources":["../src/workflow-session-completion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEjF,MAAM,MAAM,6BAA6B,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3E,MAAM,MAAM,mCAAmC,GAC3C;IACE,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,6BAA6B,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EACD,8BAA8B,GAC9B,iCAAiC,GACjC,0BAA0B,GAC1B,2BAA2B,GAC3B,iCAAiC,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAe3E;AAgBD,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,6BAA6B,CAAC;IAC9C,SAAS,EAAE,yBAAyB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAqI/C"}
@@ -0,0 +1,149 @@
1
+ import { buildCompleteRemoteSessionInput } from '@mercuryo-ai/magicpay-sdk/core';
2
+ import { getMagicPayClient, } from './session-backend.js';
3
+ import { loadRunRecord, loadStepRecord } from './run-store.js';
4
+ export function formatUnknownWorkflowCompletionError(error) {
5
+ if (error instanceof Error) {
6
+ return error.message;
7
+ }
8
+ if (typeof error === 'string') {
9
+ return error;
10
+ }
11
+ if (error && typeof error === 'object') {
12
+ try {
13
+ return JSON.stringify(error);
14
+ }
15
+ catch {
16
+ return Object.prototype.toString.call(error);
17
+ }
18
+ }
19
+ return String(error);
20
+ }
21
+ function currentPageSummary(session) {
22
+ const pageRef = session.runtime?.currentPageRef;
23
+ const page = pageRef ? session.runtime?.pages[pageRef] : undefined;
24
+ return {
25
+ ...(pageRef ? { pageRef } : {}),
26
+ ...(page?.url ? { url: page.url } : {}),
27
+ ...(page?.title ? { title: page.title } : {}),
28
+ };
29
+ }
30
+ export async function completeWorkflowSessionRemote(params) {
31
+ if (!params.session.intentSessionId) {
32
+ return {
33
+ success: false,
34
+ error: 'workflow_session_unavailable',
35
+ reason: 'No active workflow session is bound to this browser session.',
36
+ };
37
+ }
38
+ if (!params.session.activeRunId) {
39
+ return {
40
+ success: false,
41
+ error: 'workflow_run_unavailable',
42
+ reason: 'The active workflow session is missing its local run binding.',
43
+ };
44
+ }
45
+ if (!params.stepId && !params.allowMissingStep) {
46
+ return {
47
+ success: false,
48
+ error: 'workflow_step_unavailable',
49
+ reason: 'The terminal command step was not created locally before session completion.',
50
+ };
51
+ }
52
+ const run = loadRunRecord(params.session.activeRunId);
53
+ if (!run) {
54
+ return {
55
+ success: false,
56
+ error: 'workflow_run_unavailable',
57
+ reason: `Local run ${params.session.activeRunId} was not found.`,
58
+ };
59
+ }
60
+ const step = params.stepId ? loadStepRecord(run.runId, params.stepId) : null;
61
+ if (params.stepId && !step && !params.allowMissingStep) {
62
+ return {
63
+ success: false,
64
+ error: 'workflow_step_unavailable',
65
+ reason: `Local step ${params.stepId} was not found.`,
66
+ };
67
+ }
68
+ const completedAt = new Date().toISOString();
69
+ const page = currentPageSummary(params.session);
70
+ const clientCompletionId = step?.stepId ?? `${params.command}:${run.runId}:${params.terminalStatus}`;
71
+ const client = getMagicPayClient({ fetchImpl: params.fetchImpl });
72
+ const completion = await client.sessions.completeWithOutcome(params.session.intentSessionId, buildCompleteRemoteSessionInput({
73
+ clientCompletionId,
74
+ status: params.terminalStatus,
75
+ command: params.command,
76
+ summary: params.summary,
77
+ timestamp: completedAt,
78
+ page: {
79
+ ...(page.pageRef ? { ref: page.pageRef } : {}),
80
+ ...(page.url ? { url: page.url } : {}),
81
+ ...(page.title ? { title: page.title } : {}),
82
+ },
83
+ ...(params.details ? { details: params.details } : {}),
84
+ run: {
85
+ id: run.runId,
86
+ started_at: run.startedAt,
87
+ ended_at: completedAt,
88
+ source: run.source,
89
+ status: params.runStatus,
90
+ ...(run.profile ? { profile: run.profile } : {}),
91
+ ...(run.hostHints?.[0] ? { site_host: run.hostHints[0] } : {}),
92
+ protected_run: run.protectedRun,
93
+ },
94
+ ...(step
95
+ ? {
96
+ step: {
97
+ id: step.stepId,
98
+ ordinal: step.ordinal,
99
+ command: step.command,
100
+ started_at: step.startedAt,
101
+ ended_at: completedAt,
102
+ success: params.terminalStatus !== 'error',
103
+ outcome_type: params.outcomeType,
104
+ message: params.message,
105
+ ...(params.reason ? { reason: params.reason } : {}),
106
+ ...(step.refs?.pageRef
107
+ ? { page_ref: step.refs.pageRef }
108
+ : page.pageRef
109
+ ? { page_ref: page.pageRef }
110
+ : {}),
111
+ ...(step.refs?.targetRef ? { target_ref: step.refs.targetRef } : {}),
112
+ ...(step.refs?.surfaceRef ? { surface_ref: step.refs.surfaceRef } : {}),
113
+ ...(step.refs?.fillRef ? { fill_ref: step.refs.fillRef } : {}),
114
+ event_count: step.eventIds.length,
115
+ child_span_count: step.childSpans.length,
116
+ protected_step: step.protectedStep,
117
+ },
118
+ }
119
+ : {}),
120
+ }));
121
+ if (completion.success) {
122
+ return {
123
+ success: true,
124
+ response: completion.response,
125
+ completedAt,
126
+ runId: run.runId,
127
+ stepId: step?.stepId ?? null,
128
+ };
129
+ }
130
+ if (completion.kind === 'already_closed') {
131
+ return {
132
+ success: false,
133
+ error: 'workflow_session_already_closed',
134
+ reason: completion.reason,
135
+ };
136
+ }
137
+ if (completion.kind === 'not_found') {
138
+ return {
139
+ success: false,
140
+ error: 'workflow_session_unavailable',
141
+ reason: completion.reason,
142
+ };
143
+ }
144
+ return {
145
+ success: false,
146
+ error: 'backend_session_complete_failed',
147
+ reason: completion.reason,
148
+ };
149
+ }
@@ -0,0 +1,2 @@
1
+ export { type CachedTransientSecretEntry, type MagicPaySession, type MagicPayWorkflowContext, buildWorkflowContextForPersistence, cacheTransientSecret, canHydrateWorkflowContext, cleanupTransientSecretCache, clearWorkflowState, deleteCachedTransientSecret, deleteMagicPayBrowserSession, deleteWorkflowContext, getCachedTransientSecret, loadMagicPayBrowserSession, loadMagicPaySession, loadWorkflowContext, saveMagicPayBrowserSession, saveMagicPaySession, saveWorkflowContext, } from '@mercuryo-ai/magicpay-home';
2
+ //# sourceMappingURL=workflow-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-state.d.ts","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,kCAAkC,EAClC,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1 @@
1
+ export { buildWorkflowContextForPersistence, cacheTransientSecret, canHydrateWorkflowContext, cleanupTransientSecretCache, clearWorkflowState, deleteCachedTransientSecret, deleteMagicPayBrowserSession, deleteWorkflowContext, getCachedTransientSecret, loadMagicPayBrowserSession, loadMagicPaySession, loadWorkflowContext, saveMagicPayBrowserSession, saveMagicPaySession, saveWorkflowContext, } from '@mercuryo-ai/magicpay-home';
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@mercuryo-ai/magicpay-cli",
3
+ "version": "0.1.0",
4
+ "description": "MagicPay CLI — payment/session/secrets shell with narrow protected-form completion",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "bin": {
8
+ "magicpay": "./dist/index.js"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/nuanu-ai/mercuryo-agent-pay.git",
15
+ "directory": "packages/magicpay-cli"
16
+ },
17
+ "bugs": {
18
+ "url": "https://github.com/nuanu-ai/mercuryo-agent-pay/issues"
19
+ },
20
+ "homepage": "https://github.com/nuanu-ai/mercuryo-agent-pay/tree/main/packages/magicpay-cli",
21
+ "keywords": [
22
+ "magicpay",
23
+ "cli",
24
+ "payments",
25
+ "agents",
26
+ "browser-automation"
27
+ ],
28
+ "files": [
29
+ "dist",
30
+ "README.md"
31
+ ],
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ },
38
+ "dependencies": {
39
+ "@browserbasehq/stagehand": "^3.0.0",
40
+ "dotenv": "^16.4.0",
41
+ "@mercuryo-ai/magicpay-sdk": "0.1.0-test.2",
42
+ "@mercuryo-ai/magicpay-home": "0.1.0",
43
+ "@mercuryo-ai/agentbrowse": "0.2.50",
44
+ "@mercuryo-ai/captcha-solver": "0.1.0"
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^22.0.0",
48
+ "tsx": "^4.19.0",
49
+ "typescript": "5.9.2",
50
+ "vitest": "^4.0.18"
51
+ },
52
+ "scripts": {
53
+ "build:config:dev": "node scripts/write-build-config.mjs https://durcottggsiesxxqzvbb.supabase.co/functions/v1/api",
54
+ "build:config:prod": "node scripts/write-build-config.mjs https://agents-api.mercuryo.io/functions/v1/api",
55
+ "build": "pnpm --dir ../.. --filter @mercuryo-ai/agentbrowse build && pnpm --dir ../.. --filter @mercuryo-ai/captcha-solver build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-sdk build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-home build && node -e \"require('node:fs').rmSync('dist',{ recursive: true, force: true })\" && tsc -p tsconfig.build.json && node -e \"const fs=require('node:fs');fs.copyFileSync('src/mock-stored-secrets.json','dist/mock-stored-secrets.json');\"",
56
+ "check-types": "pnpm --dir ../.. --filter @mercuryo-ai/agentbrowse build && pnpm --dir ../.. --filter @mercuryo-ai/captcha-solver build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-sdk build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-home build && pnpm exec tsc -p tsconfig.json --noEmit",
57
+ "dev": "tsx src/index.ts",
58
+ "pack:verify": "node scripts/verify-pack-artifact.mjs",
59
+ "smoke:pack-install": "node scripts/verify-pack-install-smoke.mjs",
60
+ "test": "npm run test:deps && npm run test:unit:bare && npm run test:e2e:bare",
61
+ "test:deps": "pnpm --dir ../.. --filter @mercuryo-ai/agentbrowse build && pnpm --dir ../.. --filter @mercuryo-ai/captcha-solver build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-sdk build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-home build",
62
+ "test:unit": "npm run test:deps && npm run test:unit:bare",
63
+ "test:unit:bare": "MAGICPAY_DISABLE_TELEMETRY=1 vitest run --exclude \"src/__tests__/*.e2e.test.ts\" --exclude \"dist/**\"",
64
+ "test:e2e": "npm run test:deps && npm run test:e2e:bare",
65
+ "test:e2e:bare": "MAGICPAY_DISABLE_TELEMETRY=1 vitest run --no-file-parallelism --maxWorkers=1 src/__tests__/protected-fill.e2e.test.ts"
66
+ }
67
+ }