@mercuryo-ai/magicpay-home 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,28 +2,96 @@
2
2
 
3
3
  [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
4
4
 
5
- Shared configuration and state management for the MagicPay CLI family.
5
+ Shared home directory and state contract for the MagicPay CLI family.
6
6
 
7
- This package owns the `~/.magicpay` directory layout configuration files,
8
- browser session state, and workflow persistence shared by all three MagicPay
9
- CLIs:
7
+ This package owns `~/.magicpay/`: the on-disk home directory where
8
+ MagicPay's CLIs keep their config, browser-session pointer, workflow
9
+ state, and related files. It is not a CLI of its own — it is consumed
10
+ as a dependency by:
10
11
 
11
- - [`@mercuryo-ai/agentbrowse-cli`](https://www.npmjs.com/package/@mercuryo-ai/agentbrowse-cli) — browser automation
12
+ - [`@mercuryo-ai/magicbrowse-cli`](https://www.npmjs.com/package/@mercuryo-ai/magicbrowse-cli) — browser-only CLI; uses the shared MagicPay gateway config
12
13
  - [`@mercuryo-ai/magicpay-cli`](https://www.npmjs.com/package/@mercuryo-ai/magicpay-cli) — protected-form fills
13
14
  - [`@mercuryo-ai/magicpay-agent-cli`](https://www.npmjs.com/package/@mercuryo-ai/magicpay-agent-cli) — combined browser + payment agent
15
+ - [`@mercuryo-ai/agentbrowse-cli`](https://www.npmjs.com/package/@mercuryo-ai/agentbrowse-cli) — legacy browser CLI; on a deprecation track, not for new integrations
14
16
 
15
- ## Do I need to install this?
17
+ ## Do I Need To Install This?
16
18
 
17
- No. This package is pulled in automatically as a dependency of the CLIs above.
18
- You don't need to install or configure it directly.
19
+ **No.** This package is pulled in automatically as a dependency of the CLIs
20
+ above. You do not need to install or configure it directly.
19
21
 
20
- ## What it provides
22
+ ## Why This Package Exists
21
23
 
22
- - Typed helpers for `~/.magicpay/config.json` (API key, endpoints, feature
23
- flags)
24
- - Browser session persistence across process restarts
25
- - Workflow state tracking for multi-step protected-form flows
26
- - Safe concurrent writes when multiple MagicPay CLIs run at once
24
+ Each MagicPay CLI needs one place on disk for the shared API key, the
25
+ current workflow state, the browser-session pointer, mock-mode files,
26
+ and update-check state. Putting all of that under one named directory
27
+ keeps configuration, debugging, and reset operations predictable across
28
+ the whole CLI family.
29
+
30
+ `magicpay-home` is the owner of `~/.magicpay/` and of the typed helpers
31
+ the other packages call to read and write files there:
32
+
33
+ 1. Defines the MagicPay home directory at `~/.magicpay/`.
34
+ 2. Provides typed helpers for the MagicPay-specific files
35
+ (`config.json`, `workflow-state.json`, `browser-session.json`,
36
+ `update-state.json`, mock files).
37
+ 3. Lets the CLIs share state across separate processes safely (atomic
38
+ writes, single-workflow lock).
39
+
40
+ > The browser library [`@mercuryo-ai/magicbrowse`](https://www.npmjs.com/package/@mercuryo-ai/magicbrowse)
41
+ > keeps its own runtime diagnostics under `MAGICBROWSE_HOME` (default
42
+ > `~/.magicbrowse/`) — `current-session.json`, `runs/<runId>.json`,
43
+ > `run-index.json`, named profiles. Those files are separate from the
44
+ > MagicPay home and are not redirected today. See
45
+ > [`@mercuryo-ai/magicbrowse`](https://www.npmjs.com/package/@mercuryo-ai/magicbrowse)
46
+ > for that layout.
47
+
48
+ ## Directory Layout
49
+
50
+ All paths are relative to `~/.magicpay/` (or the OS equivalent of
51
+ `homedir() + "/.magicpay/"`).
52
+
53
+ All files in this table are owned and written by `magicpay-home` itself
54
+ (or by CLIs through `magicpay-home` helpers). The browser library's own
55
+ diagnostics live separately under `MAGICBROWSE_HOME` (see note above).
56
+
57
+ | Path | Purpose | Written by |
58
+ | --- | --- | --- |
59
+ | `config.json` | Shared config: MagicPay gateway (`apiKey`, `apiUrl`), browser defaults (profile, headless, proxy), updates policy. | `init` on any CLI. |
60
+ | `browser-session.json` | CDP endpoint and browser-session pointer the payment-side CLIs use to remember an `attach` across processes. | `magicpay-cli` and `magicpay-agent-cli`. |
61
+ | `workflow-state.json` | In-flight protected-form workflow state (open-data snapshot, cached transient secrets, current step). | `magicpay-cli` and `magicpay-agent-cli` only. |
62
+ | `update-state.json` | Last CLI update-check timestamp and cached result. | Any CLI that runs the update check. |
63
+ | `mock-stored-secrets.json` | Development-only mock vault items. Not used in production. | Only when the CLI is run in mock mode. |
64
+ | `mock-secret-requests.json` | Development-only mock secret-request log. Not used in production. | Only when the CLI is run in mock mode. |
65
+ | `profiles/` | Reserved directory for named browser-profile data when a CLI chooses to root profiles under MagicPay home. | Currently unused by the live CLI set; reserved path. |
66
+ | `runs/` | Per-run telemetry and files captured by MagicPay CLIs. | Any MagicPay CLI run that records run telemetry. |
67
+
68
+ Rules of thumb when debugging:
69
+
70
+ - **Safe to delete to reset auth:** `config.json`. The next `init` re-creates it.
71
+ - **Safe to delete to reset the browser session:** `browser-session.json`.
72
+ Next `launch` / `attach` starts fresh.
73
+ - **Safe to delete to reset an active workflow:** `workflow-state.json`.
74
+ Any active `magicpay` / `magicpay-agent` session is lost; the next
75
+ `start-session` begins clean.
76
+ - **Do not hand-edit** any of these files — they are managed by the CLIs
77
+ and may be rewritten at any moment.
78
+
79
+ ## What The Package Provides
80
+
81
+ - Typed helpers for reading and writing `config.json`
82
+ (`readMagicPayConfig`, `writeMagicPayConfig`, `doctorMagicPayConfig`).
83
+ - Path helpers for every file and directory above (`getMagicPayHomeDir`,
84
+ `getMagicPayConfigPath`, `getMagicPayBrowserSessionPath`, etc.).
85
+ - Workflow-state helpers for the active protected-form session
86
+ (`loadWorkflowContext`, `saveWorkflowContext`, `clearWorkflowState`).
87
+ - Browser-session helpers (`loadMagicPayBrowserSession`,
88
+ `saveMagicPayBrowserSession`, `deleteMagicPayBrowserSession`) for the
89
+ CDP endpoint pointer that magicpay-cli and magicpay-agent-cli persist
90
+ across processes.
91
+ - CLI update-check helper (`checkForPackageUpdate`) with state persisted
92
+ in `update-state.json`.
93
+ - Safe concurrent writes so several MagicPay CLIs can run in the same
94
+ process or side-by-side without corrupting shared files.
27
95
 
28
96
  ## License
29
97
 
package/dist/index.d.ts CHANGED
@@ -2,5 +2,5 @@ export { compareVersions, checkForPackageUpdate, type PackageUpdateCheckOptions,
2
2
  export { type MagicPayBrowserProxyConfig, type MagicPayBrowserProxySetting, type MagicPayConfigDoctorConfigState, type MagicPayConfigDoctorFailure, type MagicPayConfigDoctorGatewayState, type MagicPayConfigDoctorIssue, type MagicPayConfigDoctorResult, type MagicPayConfigDoctorSuccess, type MagicPaySharedConfig, doctorMagicPayConfig, getMagicPayBrowserDefaults, getMagicPayConfigPath, getMagicPayHomeDir, getMagicPayProfilesDir, getMagicPayUpdateStatePath, loadGatewayConfig, normalizeMagicPayApiUrl, readMagicPayConfig, writeMagicPayConfig, } from './config.js';
3
3
  export { deleteFileIfExists, ensureMagicPayHomeDir, ensureParentDir, atomicWriteJson, atomicWriteText, readJsonFile, } from './fs.js';
4
4
  export { MAGICPAY_BROWSER_SESSION_FILENAME, MAGICPAY_CONFIG_FILENAME, MAGICPAY_HOME_DIRNAME, MAGICPAY_MOCK_SECRET_REQUESTS_FILENAME, MAGICPAY_MOCK_STORED_SECRETS_FILENAME, MAGICPAY_PROFILES_DIRNAME, MAGICPAY_RUNS_DIRNAME, MAGICPAY_UPDATE_STATE_FILENAME, MAGICPAY_WORKFLOW_STATE_FILENAME, getMagicPayBrowserSessionPath, getMagicPayMockSecretRequestsPath, getMagicPayMockStoredSecretsPath, getMagicPayRunsDir, getMagicPayWorkflowStatePath, } from './paths.js';
5
- export { type CachedTransientSecretEntry, type MagicPaySession, type SessionOpenDataEntry, type SessionOpenDataFreshness, type SessionOpenDataProvenance, type SessionOpenDataSensitivity, type SessionOpenDataSnapshot, type SessionOpenDataSource, type MagicPayWorkflowContext, buildWorkflowContextForPersistence, cacheTransientSecret, canHydrateWorkflowContext, cleanupTransientSecretCache, clearWorkflowState, deleteCachedTransientSecret, deleteMagicPayBrowserSession, deleteWorkflowContext, getCachedTransientSecret, getSessionOpenDataValues, loadProfileFactsIntoOpenDataSnapshot, loadMagicPayBrowserSession, loadMagicPaySession, loadWorkflowContext, mergeSessionOpenDataValues, saveMagicPayBrowserSession, saveMagicPaySession, saveWorkflowContext, } from './workflow-state.js';
5
+ export { type CachedTransientSecretEntry, type BrowserSessionState, type BrowserSessionTransport, type MagicPayBrowserSessionCapabilities, type MagicPayBrowserSessionState, type MagicPaySession, type SessionOpenDataEntry, type SessionOpenDataFreshness, type SessionOpenDataProvenance, type SessionOpenDataSensitivity, type SessionOpenDataSnapshot, type SessionOpenDataSource, type MagicPayWorkflowContext, buildWorkflowContextForPersistence, cacheTransientSecret, canHydrateWorkflowContext, cleanupTransientSecretCache, clearWorkflowState, deleteCachedTransientSecret, deleteMagicPayBrowserSession, deleteWorkflowContext, getCachedTransientSecret, getSessionOpenDataValues, loadProfileFactsIntoOpenDataSnapshot, loadMagicPayBrowserSession, loadMagicPaySession, loadWorkflowContext, mergeSessionOpenDataValues, saveMagicPayBrowserSession, saveMagicPaySession, saveWorkflowContext, supportsMagicPayCaptchaSolve, withMagicPayCaptchaCapability, } from './workflow-state.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,iCAAiC,EACjC,wBAAwB,EACxB,qBAAqB,EACrB,sCAAsC,EACtC,qCAAqC,EACrC,yBAAyB,EACzB,qBAAqB,EACrB,8BAA8B,EAC9B,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,kCAAkC,EAClC,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,oCAAoC,EACpC,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,iCAAiC,EACjC,wBAAwB,EACxB,qBAAqB,EACrB,sCAAsC,EACtC,qCAAqC,EACrC,yBAAyB,EACzB,qBAAqB,EACrB,8BAA8B,EAC9B,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,kCAAkC,EACvC,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,kCAAkC,EAClC,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,oCAAoC,EACpC,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -2,4 +2,4 @@ export { compareVersions, checkForPackageUpdate, } from './cli-update-check.js';
2
2
  export { doctorMagicPayConfig, getMagicPayBrowserDefaults, getMagicPayConfigPath, getMagicPayHomeDir, getMagicPayProfilesDir, getMagicPayUpdateStatePath, loadGatewayConfig, normalizeMagicPayApiUrl, readMagicPayConfig, writeMagicPayConfig, } from './config.js';
3
3
  export { deleteFileIfExists, ensureMagicPayHomeDir, ensureParentDir, atomicWriteJson, atomicWriteText, readJsonFile, } from './fs.js';
4
4
  export { MAGICPAY_BROWSER_SESSION_FILENAME, MAGICPAY_CONFIG_FILENAME, MAGICPAY_HOME_DIRNAME, MAGICPAY_MOCK_SECRET_REQUESTS_FILENAME, MAGICPAY_MOCK_STORED_SECRETS_FILENAME, MAGICPAY_PROFILES_DIRNAME, MAGICPAY_RUNS_DIRNAME, MAGICPAY_UPDATE_STATE_FILENAME, MAGICPAY_WORKFLOW_STATE_FILENAME, getMagicPayBrowserSessionPath, getMagicPayMockSecretRequestsPath, getMagicPayMockStoredSecretsPath, getMagicPayRunsDir, getMagicPayWorkflowStatePath, } from './paths.js';
5
- export { buildWorkflowContextForPersistence, cacheTransientSecret, canHydrateWorkflowContext, cleanupTransientSecretCache, clearWorkflowState, deleteCachedTransientSecret, deleteMagicPayBrowserSession, deleteWorkflowContext, getCachedTransientSecret, getSessionOpenDataValues, loadProfileFactsIntoOpenDataSnapshot, loadMagicPayBrowserSession, loadMagicPaySession, loadWorkflowContext, mergeSessionOpenDataValues, saveMagicPayBrowserSession, saveMagicPaySession, saveWorkflowContext, } from './workflow-state.js';
5
+ export { buildWorkflowContextForPersistence, cacheTransientSecret, canHydrateWorkflowContext, cleanupTransientSecretCache, clearWorkflowState, deleteCachedTransientSecret, deleteMagicPayBrowserSession, deleteWorkflowContext, getCachedTransientSecret, getSessionOpenDataValues, loadProfileFactsIntoOpenDataSnapshot, loadMagicPayBrowserSession, loadMagicPaySession, loadWorkflowContext, mergeSessionOpenDataValues, saveMagicPayBrowserSession, saveMagicPaySession, saveWorkflowContext, supportsMagicPayCaptchaSolve, withMagicPayCaptchaCapability, } from './workflow-state.js';
@@ -1,5 +1,70 @@
1
+ import type { MagicBrowseMatchGroupSubject, MagicBrowseSubmitTargetDescriptor, OpenDataTargetDescriptor, ProtectedRedactionProfiles } from '@mercuryo-ai/magicbrowse';
1
2
  import type { MagicPayProfileFacts, SecretCatalog, SecretRequestSnapshot } from '@mercuryo-ai/magicpay-sdk';
2
- import { type BrowserSessionState } from '@mercuryo-ai/agentbrowse';
3
+ export interface BrowserSessionIdentity {
4
+ browserInstanceRef: string;
5
+ endpoint: string;
6
+ pid?: number;
7
+ profile?: string;
8
+ provider?: string;
9
+ launchedAt: string;
10
+ ownership: 'magicbrowse' | 'external';
11
+ }
12
+ export interface BrowserSessionTransport {
13
+ endpoint?: string;
14
+ proxyMode?: 'direct' | 'proxy';
15
+ proxy?: {
16
+ server: string;
17
+ username?: string;
18
+ password?: string;
19
+ };
20
+ }
21
+ export type BrowserRuntimePage = Record<string, unknown> & {
22
+ url?: string;
23
+ title?: string;
24
+ scopeEpoch?: number;
25
+ };
26
+ export type BrowserRuntimeTarget = (OpenDataTargetDescriptor | MagicBrowseSubmitTargetDescriptor) & Record<string, unknown> & {
27
+ pageRef: string;
28
+ lifecycle: 'live' | 'stale' | 'gone';
29
+ availability: {
30
+ state: 'available' | 'unavailable' | 'hidden' | string;
31
+ reason?: string;
32
+ };
33
+ capability: 'actionable' | 'field' | string;
34
+ allowedActions: string[];
35
+ acceptancePolicy?: string;
36
+ surfaceRef?: string;
37
+ ownerRef?: string;
38
+ };
39
+ export type BrowserRuntimeFillableForm = MagicBrowseMatchGroupSubject & Record<string, unknown> & {
40
+ observedAt?: string;
41
+ presence?: 'present' | 'unknown' | 'absent';
42
+ scopeEpoch?: number;
43
+ };
44
+ export interface BrowserSessionState {
45
+ cdpUrl: string;
46
+ pid?: number;
47
+ launchedAt: string;
48
+ port?: number;
49
+ profile?: string;
50
+ identity?: BrowserSessionIdentity;
51
+ transport?: BrowserSessionTransport;
52
+ runtime?: {
53
+ currentPageRef?: string;
54
+ pages?: Record<string, BrowserRuntimePage>;
55
+ targets?: Record<string, BrowserRuntimeTarget>;
56
+ fillableForms?: Record<string, BrowserRuntimeFillableForm>;
57
+ protectedExposureByPage?: Record<string, unknown>;
58
+ protectedRedactionProfiles?: ProtectedRedactionProfiles;
59
+ secretCatalogByHost?: Record<string, SecretCatalog & {
60
+ source?: string;
61
+ }>;
62
+ [key: string]: unknown;
63
+ };
64
+ stickyOwner?: Record<string, unknown>;
65
+ magicBrowseSessionId?: string;
66
+ runId?: string;
67
+ }
3
68
  export interface CachedTransientSecretEntry {
4
69
  requestId: string;
5
70
  fillRef: string;
@@ -12,6 +77,12 @@ export interface CachedTransientSecretEntry {
12
77
  export type SessionOpenDataSource = 'profile_facts' | 'session_open_value';
13
78
  export type SessionOpenDataFreshness = 'profile_snapshot' | 'session_learned';
14
79
  export type SessionOpenDataSensitivity = 'open' | 'protected';
80
+ export type SessionOpenDataApplicability = {
81
+ target: 'global';
82
+ } | {
83
+ target: 'host';
84
+ value: string;
85
+ };
15
86
  export interface SessionOpenDataProvenance {
16
87
  kind: 'profile_facts' | 'data_resolve' | 'data_provide';
17
88
  requestId?: string;
@@ -22,10 +93,7 @@ export interface SessionOpenDataEntry {
22
93
  source: SessionOpenDataSource;
23
94
  freshness: SessionOpenDataFreshness;
24
95
  sensitivity: SessionOpenDataSensitivity;
25
- applicability: {
26
- target: 'global' | 'host';
27
- value?: string;
28
- };
96
+ applicability: SessionOpenDataApplicability;
29
97
  updatedAt: string;
30
98
  factsUpdatedAt?: string;
31
99
  provenance: SessionOpenDataProvenance;
@@ -47,8 +115,16 @@ export interface MagicPayWorkflowContext {
47
115
  transientSecretCache?: Record<string, CachedTransientSecretEntry>;
48
116
  openDataSnapshot?: SessionOpenDataSnapshot;
49
117
  }
50
- export interface MagicPaySession extends BrowserSessionState, MagicPayWorkflowContext {
118
+ export interface MagicPayBrowserSessionCapabilities {
119
+ captchaSolve?: boolean;
120
+ }
121
+ export interface MagicPayBrowserSessionState extends BrowserSessionState {
122
+ capabilities?: MagicPayBrowserSessionCapabilities;
123
+ }
124
+ export interface MagicPaySession extends MagicPayBrowserSessionState, MagicPayWorkflowContext {
51
125
  }
126
+ export declare function withMagicPayCaptchaCapability<T extends BrowserSessionState>(session: T, captchaSolve?: boolean): T & MagicPayBrowserSessionState;
127
+ export declare function supportsMagicPayCaptchaSolve(session: MagicPayBrowserSessionState | BrowserSessionState | null | undefined): boolean;
52
128
  export declare function loadProfileFactsIntoOpenDataSnapshot(session: MagicPayWorkflowContext, profileFacts: MagicPayProfileFacts, options?: {
53
129
  loadedAt?: string;
54
130
  }): SessionOpenDataSnapshot;
@@ -75,9 +151,10 @@ export declare function clearWorkflowState(session: MagicPaySession): MagicPaySe
75
151
  export declare function loadWorkflowContext(): MagicPayWorkflowContext | null;
76
152
  export declare function saveWorkflowContext(context: MagicPayWorkflowContext): void;
77
153
  export declare function deleteWorkflowContext(): void;
78
- export declare function saveMagicPayBrowserSession(session: BrowserSessionState): void;
79
- export declare function loadMagicPayBrowserSession(): BrowserSessionState | null;
154
+ export declare function saveMagicPayBrowserSession(session: MagicPayBrowserSessionState): void;
155
+ export declare function loadMagicPayBrowserSession(): MagicPayBrowserSessionState | null;
80
156
  export declare function deleteMagicPayBrowserSession(): void;
81
157
  export declare function saveMagicPaySession(session: MagicPaySession): void;
82
158
  export declare function loadMagicPaySession(): MagicPaySession | null;
159
+ export declare function resolveBrowserSessionId(session: Pick<BrowserSessionState, 'cdpUrl' | 'identity' | 'pid' | 'magicBrowseSessionId'>): string;
83
160
  //# sourceMappingURL=workflow-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-state.d.ts","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-state.d.ts","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,18 @@
1
- import { createBrowserSessionStore, resolveBrowserSessionId, } from '@mercuryo-ai/agentbrowse';
2
1
  import { deleteFileIfExists, atomicWriteJson, readJsonFile } from './fs.js';
3
- import { MAGICPAY_BROWSER_SESSION_FILENAME, getMagicPayHomeDir, getMagicPayWorkflowStatePath, } from './paths.js';
2
+ import { getMagicPayBrowserSessionPath, getMagicPayWorkflowStatePath, } from './paths.js';
3
+ export function withMagicPayCaptchaCapability(session, captchaSolve = true) {
4
+ const currentCapabilities = session.capabilities;
5
+ return {
6
+ ...session,
7
+ capabilities: {
8
+ ...(currentCapabilities ?? {}),
9
+ captchaSolve,
10
+ },
11
+ };
12
+ }
13
+ export function supportsMagicPayCaptchaSolve(session) {
14
+ return session?.capabilities?.captchaSolve === true;
15
+ }
4
16
  function isSupportedOpenDataValue(value) {
5
17
  return typeof value === 'string' || (typeof value === 'number' && Number.isFinite(value));
6
18
  }
@@ -58,7 +70,7 @@ function openDataEntryIdentity(entry) {
58
70
  return [
59
71
  normalizeOpenDataFieldKey(entry.fieldKey),
60
72
  entry.applicability.target,
61
- normalizeScopeValue(entry.applicability.value),
73
+ normalizeScopeValue(entry.applicability.target === 'host' ? entry.applicability.value : undefined),
62
74
  entry.value,
63
75
  ].join('::');
64
76
  }
@@ -176,10 +188,19 @@ export function getSessionOpenDataValues(session, fieldKey, options = {}) {
176
188
  .map((entry) => cloneOpenDataEntry(entry));
177
189
  }
178
190
  function getMagicPayBrowserSessionStore() {
179
- return createBrowserSessionStore({
180
- rootDir: getMagicPayHomeDir(),
181
- sessionFileName: MAGICPAY_BROWSER_SESSION_FILENAME,
182
- });
191
+ const sessionPath = getMagicPayBrowserSessionPath();
192
+ return {
193
+ save(session) {
194
+ atomicWriteJson(sessionPath, session);
195
+ },
196
+ load() {
197
+ const session = readJsonFile(sessionPath);
198
+ return session?.cdpUrl ? session : null;
199
+ },
200
+ delete() {
201
+ deleteFileIfExists(sessionPath);
202
+ },
203
+ };
183
204
  }
184
205
  function isExpired(expiresAt, now) {
185
206
  if (!expiresAt) {
@@ -346,3 +367,25 @@ export function loadMagicPaySession() {
346
367
  return null;
347
368
  }
348
369
  }
370
+ function parseBrowserInstanceRef(cdpUrl) {
371
+ try {
372
+ const url = new URL(cdpUrl);
373
+ const pathname = url.pathname.replace(/^\/+/, '').replace(/\/+$/, '');
374
+ return `${url.host}${pathname ? `/${pathname}` : ''}`;
375
+ }
376
+ catch {
377
+ return cdpUrl.replace(/^https?:\/\//, '').replace(/^wss?:\/\//, '').replace(/\/+$/, '');
378
+ }
379
+ }
380
+ export function resolveBrowserSessionId(session) {
381
+ if (session.magicBrowseSessionId) {
382
+ return session.magicBrowseSessionId;
383
+ }
384
+ if (session.identity?.browserInstanceRef) {
385
+ return session.identity.browserInstanceRef;
386
+ }
387
+ if (typeof session.pid === 'number' && Number.isFinite(session.pid) && session.pid > 0) {
388
+ return `pid-${session.pid}`;
389
+ }
390
+ return `cdp-${parseBrowserInstanceRef(session.cdpUrl)}`;
391
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mercuryo-ai/magicpay-home",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Internal shared local home/config/state contract for MagicPay product CLIs",
@@ -20,8 +20,8 @@
20
20
  "access": "public"
21
21
  },
22
22
  "dependencies": {
23
- "@mercuryo-ai/agentbrowse": "0.2.60",
24
- "@mercuryo-ai/magicpay-sdk": "0.1.2"
23
+ "@mercuryo-ai/magicbrowse": "0.0.1",
24
+ "@mercuryo-ai/magicpay-sdk": "0.1.4"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^22.0.0",
@@ -29,11 +29,11 @@
29
29
  "vitest": "^4.0.18"
30
30
  },
31
31
  "scripts": {
32
- "build": "pnpm --dir ../.. --filter @mercuryo-ai/agentbrowse build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-sdk build && node -e \"require('node:fs').rmSync('dist',{ recursive: true, force: true, maxRetries: 10, retryDelay: 50 })\" && tsc -p tsconfig.build.json",
33
- "check-types": "pnpm --dir ../.. --filter @mercuryo-ai/agentbrowse build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-sdk build && tsc --noEmit",
32
+ "build": "pnpm --dir ../.. --filter @mercuryo-ai/magicbrowse build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-sdk build && node -e \"require('node:fs').rmSync('dist',{ recursive: true, force: true, maxRetries: 10, retryDelay: 50 })\" && tsc -p tsconfig.build.json",
33
+ "check-types": "pnpm --dir ../.. --filter @mercuryo-ai/magicbrowse build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-sdk build && tsc --noEmit",
34
34
  "pack:verify": "node scripts/verify-pack-artifact.mjs",
35
35
  "smoke:pack-install": "node scripts/verify-pack-install-smoke.mjs",
36
36
  "test": "npm run test:deps && vitest run",
37
- "test:deps": "pnpm --dir ../.. --filter @mercuryo-ai/agentbrowse build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-sdk build"
37
+ "test:deps": "pnpm --dir ../.. --filter @mercuryo-ai/magicbrowse build && pnpm --dir ../.. --filter @mercuryo-ai/magicpay-sdk build"
38
38
  }
39
39
  }