@bridge_gpt/mcp-server 0.2.23 → 0.2.24
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 +69 -17
- package/build/commands.generated.js +2 -2
- package/build/decision-page-template.js +9 -4
- package/build/docs.generated.js +5 -0
- package/build/index.js +762 -279
- package/build/init.js +29 -0
- package/build/install-bridge.js +480 -76
- package/build/readme.generated.js +1 -1
- package/build/sfcc/log-gate.js +85 -0
- package/build/sfcc/log-query.js +170 -0
- package/build/sfcc/register.js +10 -0
- package/build/sfcc/setup-status.js +33 -3
- package/build/version.generated.js +1 -1
- package/{CONDUCTOR.md → docs/CONDUCTOR.md} +2 -2
- package/docs/install/github-app.md +189 -0
- package/docs/install/mcp-tool-integrations.md +305 -0
- package/docs/install/sfcc-integration.md +140 -0
- package/package.json +5 -5
- package/public/js/main.min.js +46 -1
- package/public/js/main.min.js.map +1 -1
- package/smoke-test/SMOKE-TEST.md +3 -2
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Installing the SFCC Integration (OCAPI)
|
|
2
|
+
|
|
3
|
+
Bridge's Salesforce B2C Commerce (SFCC) tools give an AI coding agent read access to
|
|
4
|
+
a sandbox's object model, custom object definitions, and site preferences — plus a
|
|
5
|
+
small set of sandbox-only writes — through the **OCAPI Data API**. This guide covers
|
|
6
|
+
setting up the OCAPI client that those tools authenticate against.
|
|
7
|
+
|
|
8
|
+
> **Sandbox / local development only.** This integration is intended for a **developer
|
|
9
|
+
> sandbox**. The tools reject non-sandbox instances, and the permissions grant below is
|
|
10
|
+
> deliberately broad (all methods, all resources) — appropriate for a throwaway dev
|
|
11
|
+
> sandbox, **never** for staging or production. Do not configure this grant on any
|
|
12
|
+
> instance that holds real data. Credentials stay local (in `dw.json` or `SFCC_*` env
|
|
13
|
+
> vars) and are never sent to Bridge.
|
|
14
|
+
|
|
15
|
+
For the full per-tool list and what each SFCC tool depends on, see
|
|
16
|
+
[MCP Tool Integration Dependencies](./mcp-tool-integrations.md). For the tool reference
|
|
17
|
+
and the `BRIDGE_MCP_PROFILE` gating, see the SFCC section of the
|
|
18
|
+
[package README](../../README.md).
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
- A running SFCC **developer sandbox** and its hostname
|
|
23
|
+
(e.g. `zzzz-001.sandbox.us01.dx.commercecloud.salesforce.com`).
|
|
24
|
+
- An **Account Manager API client** — a `client-id` and `client-secret`. This is the
|
|
25
|
+
OCAPI client the tools use to obtain an OAuth token. Create one in Account Manager
|
|
26
|
+
(**API Client** → *Add API Client*) if you don't already have it, and note its
|
|
27
|
+
`client_id`.
|
|
28
|
+
- Business Manager access to the sandbox with permission to edit **Open Commerce API
|
|
29
|
+
Settings**.
|
|
30
|
+
|
|
31
|
+
## 1. Grant the OCAPI client access in Business Manager
|
|
32
|
+
|
|
33
|
+
In Business Manager for the sandbox:
|
|
34
|
+
|
|
35
|
+
**Administration → Site Development → Open Commerce API Settings → Data API** tab.
|
|
36
|
+
|
|
37
|
+
Add the following client entry to the `clients` array of the Data API settings, then
|
|
38
|
+
**Save**. This grants the client full read/write access to every Data API resource —
|
|
39
|
+
acceptable only on a developer sandbox:
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"client_id": "<your-client-id-here>",
|
|
44
|
+
"resources": [
|
|
45
|
+
{
|
|
46
|
+
"methods": ["get", "post", "put", "patch", "delete"],
|
|
47
|
+
"read_attributes": "(**)",
|
|
48
|
+
"write_attributes": "(**)",
|
|
49
|
+
"resource_id": "/**"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Notes:
|
|
56
|
+
|
|
57
|
+
- The `client_id` **must match** the Account Manager API client whose credentials you
|
|
58
|
+
put in `dw.json` / `SFCC_*` below. Replace the value above with your own client id if
|
|
59
|
+
it differs.
|
|
60
|
+
- If the Data API settings are empty, wrap the entry in the standard settings envelope:
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"_v": "23.2",
|
|
65
|
+
"clients": [
|
|
66
|
+
{
|
|
67
|
+
"client_id": "<your-client-id-here>",
|
|
68
|
+
"resources": [
|
|
69
|
+
{
|
|
70
|
+
"methods": ["get", "post", "put", "patch", "delete"],
|
|
71
|
+
"read_attributes": "(**)",
|
|
72
|
+
"write_attributes": "(**)",
|
|
73
|
+
"resource_id": "/**"
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- `check_permissions` (below) prints a ready-to-paste grant JSON on a 401/403, so you can
|
|
82
|
+
also let the tool tell you exactly what to add.
|
|
83
|
+
|
|
84
|
+
## 2. Provide credentials locally
|
|
85
|
+
|
|
86
|
+
Create a `dw.json` in your project root (auto-added to git exclude — never commit it):
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"hostname": "zzzz-001.sandbox.us01.dx.commercecloud.salesforce.com",
|
|
91
|
+
"client-id": "<your-client-id-here>",
|
|
92
|
+
"client-secret": "<account-manager-client-secret>"
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Accepted key spellings: `hostname`/`host`, `client-id`/`clientId`/`client_id`,
|
|
97
|
+
`client-secret`/`clientSecret`/`client_secret`. Prefer a single config — a multi-entry
|
|
98
|
+
`configs[]` array forces an explicit `instance` on every call. Alternatively, export
|
|
99
|
+
`SFCC_HOSTNAME` / `SFCC_CLIENT_ID` / `SFCC_CLIENT_SECRET` in the MCP server environment.
|
|
100
|
+
|
|
101
|
+
## 3. Set the repo `version` config field
|
|
102
|
+
|
|
103
|
+
Set the repo's `version` config to your SFCC project type — one of
|
|
104
|
+
`sfra | pwakit | sitegenesis | storefrontnext | hybrid`. The call-time gate reads this;
|
|
105
|
+
a non-SFCC value blocks every SFCC tool except `sfcc_setup_status`. Set it via your
|
|
106
|
+
normal config path, the `config_field` MCP tool (operation `update`, field `version`),
|
|
107
|
+
or the `/teach-bridge` skill.
|
|
108
|
+
|
|
109
|
+
## 4. Enable the SFCC tools
|
|
110
|
+
|
|
111
|
+
The two diagnostic tools (`sfcc_setup_status`, `check_permissions`) are always
|
|
112
|
+
registered. The read tools, write tools, and `sfcc_log_query` are gated behind the
|
|
113
|
+
`sfcc` profile. Add `sfcc` to `BRIDGE_MCP_PROFILE` in the MCP server `env` block (it is
|
|
114
|
+
comma-separated; `full` also works), then **restart the MCP client**:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
"env": { "BRIDGE_MCP_PROFILE": "sfcc" }
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## 5. Verify
|
|
121
|
+
|
|
122
|
+
Ask your agent to run:
|
|
123
|
+
|
|
124
|
+
1. `sfcc_setup_status` — expect all prerequisite checks ✓ (Bridge API key, repo name,
|
|
125
|
+
`version` config, `dw.json` presence/uniqueness, AM/OCAPI token acquisition).
|
|
126
|
+
2. `check_permissions` — probes OCAPI via `GET /system_object_definitions`. A 200 (with
|
|
127
|
+
the OCAPI version) confirms the grant. On 401/403 it prints the exact grant JSON to
|
|
128
|
+
paste back in step 1.
|
|
129
|
+
|
|
130
|
+
Restart the MCP client after any credential, grant, or env change — a running session
|
|
131
|
+
does not pick them up.
|
|
132
|
+
|
|
133
|
+
## Notes
|
|
134
|
+
|
|
135
|
+
- **WebDAV logs are separate.** `sfcc_log_query` authenticates with a Business Manager
|
|
136
|
+
username + a 40-character **WebDAV access key** over HTTP Basic auth — *not* the OCAPI
|
|
137
|
+
OAuth token configured here. `sfcc_setup_status` reports OCAPI (step 5) and WebDAV
|
|
138
|
+
(step 6) independently; one can be green while the other is not.
|
|
139
|
+
- **Writes are sandbox-only.** The write tools (attribute/preference create/update) target
|
|
140
|
+
a developer sandbox and echo a paste-ready grant JSON on a 403.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bridge_gpt/mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.24",
|
|
4
4
|
"description": "Bridge API MCP server — exposes Jira endpoints as MCP tools for Claude Code agents",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
"design-assets/",
|
|
20
20
|
"public/",
|
|
21
21
|
"README.md",
|
|
22
|
-
"
|
|
22
|
+
"docs/",
|
|
23
23
|
"LICENSE"
|
|
24
24
|
],
|
|
25
25
|
"scripts": {
|
|
26
|
-
"build": "node scripts/bundle-version.js && node scripts/bundle-readme.js && node scripts/bundle-pipelines.js && node scripts/bundle-commands.js && node scripts/bundle-agents.js && tsc && node scripts/bundle-esbuild.js",
|
|
26
|
+
"build": "node scripts/bundle-version.js && node scripts/bundle-readme.js && node scripts/bundle-pipelines.js && node scripts/bundle-commands.js && node scripts/bundle-agents.js && node scripts/bundle-docs.js && tsc && node scripts/bundle-esbuild.js",
|
|
27
27
|
"check:version-generated": "node scripts/bundle-version.js && node scripts/check-version-generated.js",
|
|
28
28
|
"postbuild": "node scripts/prepend-shebang.cjs",
|
|
29
29
|
"start": "node build/index.js",
|
|
30
|
-
"test": "node --test --test-force-exit build/pipeline-utils.test.js build/backend-warnings.test.js build/update-check.test.js build/cli-upgrade.test.js build/decision-page-schema.test.js build/decision-page-template.test.js build/bundle-pipelines.test.js build/instructions-contract.test.js build/pipeline-orchestrator-persistence.test.js build/pipeline-orchestrator-execution.test.js build/pipeline-orchestrator-integration.test.js build/index-static.test.js build/config-fields.static.test.js build/execute-plan-instructions.static.test.js build/index-resolvers.test.js build/index-project-root.test.js build/index-pipelines.test.js build/index.test.js build/bridge-config.test.js build/credential-store.test.js build/agent-config-credential-migration.test.js build/mcp-invoke.test.js build/mcp-provisioning.test.js build/mcp-server-invocation.test.js build/third-party-mcp-targets.test.js build/git-ignore-utils.test.js build/credential-materialization.test.js build/mcp-registration-doctor.test.js build/secret-safety.test.js build/base-ref.test.js build/pr-base-contract.test.js build/start-tickets.test.js build/review-tickets.test.js build/start-tickets-base-branch.test.js build/agent-registry.test.js build/agent-registry.model-routing.test.js build/start-tickets.shell-model-routing.test.js build/start-tickets.bridge-api-model-routing.test.js build/start-tickets.tier-fetch-model-routing.test.js build/start-tickets.resolve-model-routing.test.js build/start-tickets.orchestrate-model-routing.test.js build/start-tickets.routing-diagnostics.test.js build/start-tickets-repo.test.js build/start-tickets-credential-invariants.static.test.js build/credentials-cli.test.js build/start-tickets-prereqs.test.js build/regression-check.test.js build/doctor.test.js build/install-doctor.test.js build/install-bridge.test.js build/install-bridge-invite.test.js build/install-bridge-prompt.test.js build/init.test.js build/resolveUploadAttachment.test.js build/package-static.test.js build/chain-utils.test.js build/chain-orchestrator.test.js build/scheduler-backends/types.test.js build/scheduler-backends/escaping.test.js build/scheduler-backends/launchd.test.js build/scheduler-backends/task-scheduler.test.js build/scheduler-backends/systemd-user.test.js build/scheduler-backends/at-fallback.test.js build/scheduler-backends/index.test.js build/command-catalog.test.js build/scheduled-prompt.test.js build/agent-launchers/claude.test.js build/agent-launchers/cursor.test.js build/agent-launchers/index.test.js build/schedule-store.test.js build/schedule-run.test.js build/setup-epic.test.js build/agent-capabilities/cli.test.js build/agent-capabilities/runner.test.js build/agent-capabilities/probes.test.js build/agent-capabilities/probe-context.test.js build/agent-capabilities/reporter.test.js build/conductor/taxonomy-and-errors.test.js build/conductor/github-mergeability.test.js build/conductor/merge-conflict-routing.test.js build/conductor/redaction-normalization.test.js build/conductor/claude-hook.test.js build/conductor/git-ci-types.test.js build/conductor/done-gate.test.js build/conductor/git-ci-taxonomy-payload.test.js build/conductor/bridge-api-client.test.js build/conductor/plan.test.js build/conductor/producer-ledger.test.js build/conductor/spec-review-producer.test.js build/conductor/git-producer.test.js build/conductor/git-hooks.test.js build/conductor/store-migration.test.js build/conductor/pr-discovery.test.js build/conductor/pr-ci-producer.test.js build/conductor/pr-review-producer.test.js build/conductor/doctor.test.js build/conductor/deny-enforcement-preflight.test.js build/conductor/errors.test.js build/conductor/store.test.js build/conductor/index-poll-ci-producer.test.js build/start-tickets-conductor.test.js build/start-tickets-conductor.spawn.test.js build/start-tickets-conductor-node-propagation.test.js build/start-tickets.non-mutating-base.test.js build/start-tickets-live-source-guard.test.js build/conductor/worker-ledger-cli.test.js build/conductor/supervisor-config.test.js build/conductor/supervisor-ledger.test.js build/conductor/supervisor-state-reducer.test.js build/conductor/supervisor-housekeeping-projection.test.js build/conductor/supervisor-escalation.test.js build/conductor/supervisor-retired-judgment.static.test.js build/conductor/supervisor-runtime.test.js build/conductor/supervisor-store-projection.test.js build/conductor/supervisor-cli.test.js build/conductor/supervisor-start-tickets.test.js build/conductor/supervisor-message-relay.test.js build/conductor/supervisor-state-message-events.test.js build/conductor/store-message-relay.test.js build/start-tickets-message-relay.test.js build/conductor/event-accessors.test.js build/conductor/merge-ledger.test.js build/conductor/deterministic-completion.static.test.js build/conductor/deterministic-completion.integration.test.js build/conductor/local-merge.test.js build/conductor/local-merge.static.test.js build/conductor/supervisor-merge.test.js build/conductor/bridge-api-merge-client.test.js build/conductor/bridge-api-epic-client.test.js build/conductor/supervisor-merge-runtime-state.test.js build/conductor/epic-state.test.js build/executor/claude-settings.test.js build/executor/cli.test.js build/executor/credentials.test.js build/executor/echo-acceptance.test.js build/executor/env.test.js build/executor/base-branch.test.js build/executor/heartbeat.test.js build/executor/http-client.test.js build/executor/job-runner.test.js build/executor/job-runner.payload-timeout.test.js build/executor/worker-finalization.test.js build/executor/job-runner.static.test.js build/executor/prompt-spec.test.js build/executor/job-types.test.js build/executor/recovery-job.static.test.js build/executor/observation.test.js build/executor/permissions.test.js build/executor/preflight.test.js build/executor/process.test.js build/executor/results.test.js build/executor/runner.test.js build/executor/terminal-mutation.test.js build/executor/worker-command.test.js build/executor/worktree-core.test.js build/executor/worktree.test.js build/executor/job-errors.test.js build/executor/worktree-inspection.test.js build/executor/resume-pre-spawn.test.js build/executor/verdict-artifact.test.js build/executor/worker-log.test.js build/executor/job-log-registry.test.js build/executor/viewer-tabs.test.js build/executor/watch-cli.test.js build/executor/merge-job.test.js build/executor/job-runner.merge.test.js build/executor/worktree-gc.test.js build/executor/runner.job-behaviors.test.js build/conductor/cli-freeze.test.js build/conductor/epic-reconcile.test.js build/conductor/epic-runtime.test.js build/conductor/epic-tick-sequence.test.js build/conductor/epic-runtime-post-action.test.js build/conductor/file-scope-guard.test.js build/conductor/file-scope-guard.integration.test.js build/mcp-profile.test.js build/mcp-profile-registration.test.js build/tools-budget.test.js build/visual-diff-worker.test.js build/visual-diff.test.js build/estimate-epic.test.js build/integration/measure-tools.test.js build/sfcc/config.test.js build/sfcc/ocapi-shape.test.js build/sfcc/output.test.js build/sfcc/credentials.test.js build/sfcc/ocapi-write-faults.test.js build/sfcc/write-guard.test.js build/sfcc/write-grants.test.js build/sfcc/write-result.test.js build/sfcc/writes.test.js build/sfcc/writes-system-object-payloads.test.js build/sfcc/writes-payloads.test.js && node --experimental-test-module-mocks --test --test-force-exit build/index-heavy-read-truncation.test.js build/index-artifacts.test.js build/index.review-rounds.test.js build/index-brainstorm-filenames.test.js build/index-output-path.test.js build/index-generate-decision-page.test.js build/index-generate-decision-page.integration.test.js build/visual-diff.registration.test.js build/visual-diff.attachment-adapter.test.js build/attachment-download.test.js build/attachment-upload.test.js build/conductor/paths.test.js build/conductor/store-lifecycle.test.js build/conductor/store-queries.test.js build/conductor/tools.test.js build/conductor/cli.test.js build/conductor/security-regressions.test.js build/conductor/git-inspection.test.js build/conductor/tools-done-gate.test.js build/conductor/pr-ci-producer-emit-seam.test.js build/conductor/cli-git-hooks.test.js build/sfcc/client.test.js build/sfcc/tool-wrapper.test.js build/sfcc/setup-status.test.js build/sfcc/permissions.test.js build/sfcc/register.test.js build/sfcc/reads-system-object.test.js build/sfcc/reads-custom-object-def.test.js build/sfcc/reads-site-preference.test.js build/sfcc/writes-system-object.test.js build/sfcc/writes-custom-object-def.test.js build/sfcc/writes-site-preference.test.js",
|
|
31
|
-
"test:integration": "node --test build/integration/refresh-main.integration.test.js build/integration/start-tickets.integration.test.js build/integration/doctor.integration.test.js build/integration/agent-capabilities.integration.test.js build/integration/conductor-producer.integration.test.js build/integration/conductor-message-relay.integration.test.js build/integration/executor-http-runner.integration.test.js build/integration/executor-job-behaviors.integration.test.js build/integration/executor-recovery-jobs.integration.test.js build/integration/executor-spec-review-prompt.integration.test.js build/integration/resume-pre-spawn.git.integration.test.js build/integration/worker-finalization-origin.integration.test.js build/integration/post-remediation-merge-ci-wait.integration.test.js build/integration/executor-merge-supervision.integration.test.js build/integration/attachment-binary-roundtrip.integration.test.js build/integration/dependent-ticket-fresh-base.integration.test.js build/integration/execute-plan-instructions.integration.test.js",
|
|
30
|
+
"test": "node --test --test-force-exit build/pipeline-utils.test.js build/backend-warnings.test.js build/update-check.test.js build/cli-upgrade.test.js build/decision-page-schema.test.js build/decision-page-template.test.js build/bundle-pipelines.test.js build/instructions-contract.test.js build/pipeline-orchestrator-persistence.test.js build/pipeline-orchestrator-execution.test.js build/pipeline-orchestrator-integration.test.js build/index-static.test.js build/config-fields.static.test.js build/execute-plan-instructions.static.test.js build/index-resolvers.test.js build/index-project-root.test.js build/index-pipelines.test.js build/index.test.js build/bridge-config.test.js build/credential-store.test.js build/agent-config-credential-migration.test.js build/mcp-invoke.test.js build/mcp-provisioning.test.js build/mcp-server-invocation.test.js build/third-party-mcp-targets.test.js build/git-ignore-utils.test.js build/credential-materialization.test.js build/mcp-registration-doctor.test.js build/secret-safety.test.js build/base-ref.test.js build/pr-base-contract.test.js build/start-tickets.test.js build/review-tickets.test.js build/start-tickets-base-branch.test.js build/agent-registry.test.js build/agent-registry.model-routing.test.js build/start-tickets.shell-model-routing.test.js build/start-tickets.bridge-api-model-routing.test.js build/start-tickets.tier-fetch-model-routing.test.js build/start-tickets.resolve-model-routing.test.js build/start-tickets.orchestrate-model-routing.test.js build/start-tickets.routing-diagnostics.test.js build/start-tickets-repo.test.js build/start-tickets-credential-invariants.static.test.js build/credentials-cli.test.js build/start-tickets-prereqs.test.js build/regression-check.test.js build/doctor.test.js build/install-doctor.test.js build/install-bridge.test.js build/install-bridge-invite.test.js build/install-bridge-prompt.test.js build/init.test.js build/resolveUploadAttachment.test.js build/package-static.test.js build/chain-utils.test.js build/chain-orchestrator.test.js build/scheduler-backends/types.test.js build/scheduler-backends/escaping.test.js build/scheduler-backends/launchd.test.js build/scheduler-backends/task-scheduler.test.js build/scheduler-backends/systemd-user.test.js build/scheduler-backends/at-fallback.test.js build/scheduler-backends/index.test.js build/command-catalog.test.js build/scheduled-prompt.test.js build/agent-launchers/claude.test.js build/agent-launchers/cursor.test.js build/agent-launchers/index.test.js build/schedule-store.test.js build/schedule-run.test.js build/setup-epic.test.js build/agent-capabilities/cli.test.js build/agent-capabilities/runner.test.js build/agent-capabilities/probes.test.js build/agent-capabilities/probe-context.test.js build/agent-capabilities/reporter.test.js build/conductor/taxonomy-and-errors.test.js build/conductor/github-mergeability.test.js build/conductor/merge-conflict-routing.test.js build/conductor/redaction-normalization.test.js build/conductor/claude-hook.test.js build/conductor/git-ci-types.test.js build/conductor/done-gate.test.js build/conductor/git-ci-taxonomy-payload.test.js build/conductor/bridge-api-client.test.js build/conductor/plan.test.js build/conductor/producer-ledger.test.js build/conductor/spec-review-producer.test.js build/conductor/git-producer.test.js build/conductor/git-hooks.test.js build/conductor/store-migration.test.js build/conductor/pr-discovery.test.js build/conductor/pr-ci-producer.test.js build/conductor/pr-review-producer.test.js build/conductor/doctor.test.js build/conductor/deny-enforcement-preflight.test.js build/conductor/errors.test.js build/conductor/store.test.js build/conductor/index-poll-ci-producer.test.js build/start-tickets-conductor.test.js build/start-tickets-conductor.spawn.test.js build/start-tickets-conductor-node-propagation.test.js build/start-tickets.non-mutating-base.test.js build/start-tickets-live-source-guard.test.js build/conductor/worker-ledger-cli.test.js build/conductor/supervisor-config.test.js build/conductor/supervisor-ledger.test.js build/conductor/supervisor-state-reducer.test.js build/conductor/supervisor-housekeeping-projection.test.js build/conductor/supervisor-escalation.test.js build/conductor/supervisor-retired-judgment.static.test.js build/conductor/supervisor-runtime.test.js build/conductor/supervisor-store-projection.test.js build/conductor/supervisor-cli.test.js build/conductor/supervisor-start-tickets.test.js build/conductor/supervisor-message-relay.test.js build/conductor/supervisor-state-message-events.test.js build/conductor/store-message-relay.test.js build/start-tickets-message-relay.test.js build/conductor/event-accessors.test.js build/conductor/merge-ledger.test.js build/conductor/deterministic-completion.static.test.js build/conductor/deterministic-completion.integration.test.js build/conductor/local-merge.test.js build/conductor/local-merge.static.test.js build/conductor/supervisor-merge.test.js build/conductor/bridge-api-merge-client.test.js build/conductor/bridge-api-epic-client.test.js build/conductor/supervisor-merge-runtime-state.test.js build/conductor/epic-state.test.js build/executor/claude-settings.test.js build/executor/cli.test.js build/executor/credentials.test.js build/executor/echo-acceptance.test.js build/executor/env.test.js build/executor/base-branch.test.js build/executor/heartbeat.test.js build/executor/http-client.test.js build/executor/job-runner.test.js build/executor/job-runner.payload-timeout.test.js build/executor/worker-finalization.test.js build/executor/job-runner.static.test.js build/executor/prompt-spec.test.js build/executor/job-types.test.js build/executor/recovery-job.static.test.js build/executor/observation.test.js build/executor/permissions.test.js build/executor/preflight.test.js build/executor/process.test.js build/executor/results.test.js build/executor/runner.test.js build/executor/terminal-mutation.test.js build/executor/worker-command.test.js build/executor/worktree-core.test.js build/executor/worktree.test.js build/executor/job-errors.test.js build/executor/worktree-inspection.test.js build/executor/resume-pre-spawn.test.js build/executor/verdict-artifact.test.js build/executor/worker-log.test.js build/executor/job-log-registry.test.js build/executor/viewer-tabs.test.js build/executor/watch-cli.test.js build/executor/merge-job.test.js build/executor/job-runner.merge.test.js build/executor/worktree-gc.test.js build/executor/runner.job-behaviors.test.js build/conductor/cli-freeze.test.js build/conductor/epic-reconcile.test.js build/conductor/epic-runtime.test.js build/conductor/epic-tick-sequence.test.js build/conductor/epic-runtime-post-action.test.js build/conductor/file-scope-guard.test.js build/conductor/file-scope-guard.integration.test.js build/mcp-profile.test.js build/mcp-profile-registration.test.js build/tools-budget.test.js build/visual-diff-worker.test.js build/visual-diff.test.js build/estimate-epic.test.js build/integration/measure-tools.test.js build/sfcc/config.test.js build/sfcc/ocapi-shape.test.js build/sfcc/output.test.js build/sfcc/credentials.test.js build/sfcc/ocapi-write-faults.test.js build/sfcc/write-guard.test.js build/sfcc/write-grants.test.js build/sfcc/write-result.test.js build/sfcc/writes.test.js build/sfcc/writes-system-object-payloads.test.js build/sfcc/writes-payloads.test.js build/sfcc/log-gate.test.js build/sfcc/log-query.test.js && node --experimental-test-module-mocks --test --test-force-exit build/index-heavy-read-truncation.test.js build/index-artifacts.test.js build/index.review-rounds.test.js build/index-brainstorm-filenames.test.js build/index-output-path.test.js build/index-generate-decision-page.test.js build/index-generate-decision-page.integration.test.js build/visual-diff.registration.test.js build/visual-diff.attachment-adapter.test.js build/attachment-download.test.js build/attachment-upload.test.js build/conductor/paths.test.js build/conductor/store-lifecycle.test.js build/conductor/store-queries.test.js build/conductor/tools.test.js build/conductor/cli.test.js build/conductor/security-regressions.test.js build/conductor/git-inspection.test.js build/conductor/tools-done-gate.test.js build/conductor/pr-ci-producer-emit-seam.test.js build/conductor/cli-git-hooks.test.js build/sfcc/client.test.js build/sfcc/tool-wrapper.test.js build/sfcc/setup-status.test.js build/sfcc/permissions.test.js build/sfcc/register.test.js build/sfcc/reads-system-object.test.js build/sfcc/reads-custom-object-def.test.js build/sfcc/reads-site-preference.test.js build/sfcc/writes-system-object.test.js build/sfcc/writes-custom-object-def.test.js build/sfcc/writes-site-preference.test.js",
|
|
31
|
+
"test:integration": "node --test build/integration/refresh-main.integration.test.js build/integration/start-tickets.integration.test.js build/integration/doctor.integration.test.js build/integration/agent-capabilities.integration.test.js build/integration/conductor-producer.integration.test.js build/integration/conductor-message-relay.integration.test.js build/integration/executor-http-runner.integration.test.js build/integration/executor-job-behaviors.integration.test.js build/integration/executor-recovery-jobs.integration.test.js build/integration/executor-spec-review-prompt.integration.test.js build/integration/resume-pre-spawn.git.integration.test.js build/integration/worker-finalization-origin.integration.test.js build/integration/post-remediation-merge-ci-wait.integration.test.js build/integration/executor-merge-supervision.integration.test.js build/integration/attachment-binary-roundtrip.integration.test.js build/integration/dependent-ticket-fresh-base.integration.test.js build/integration/execute-plan-instructions.integration.test.js build/integration/install-bridge-repo-resolution.integration.test.js",
|
|
32
32
|
"test:smoke": "node --test build/integration/packaged-cli-smoke.test.js",
|
|
33
33
|
"prepublishOnly": "node scripts/bundle-assets.js && npm run build && node scripts/verify-shebang.cjs"
|
|
34
34
|
},
|
package/public/js/main.min.js
CHANGED
|
@@ -3496,7 +3496,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3496
3496
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3497
3497
|
/* harmony export */ hideModal: () => (/* binding */ hideModal),
|
|
3498
3498
|
/* harmony export */ initModal: () => (/* binding */ initModal),
|
|
3499
|
-
/* harmony export */
|
|
3499
|
+
/* harmony export */ replaceModalBody: () => (/* binding */ replaceModalBody),
|
|
3500
|
+
/* harmony export */ showModal: () => (/* binding */ showModal),
|
|
3501
|
+
/* harmony export */ showModalNode: () => (/* binding */ showModalNode)
|
|
3500
3502
|
/* harmony export */ });
|
|
3501
3503
|
// src/js/modal.js
|
|
3502
3504
|
|
|
@@ -3550,6 +3552,49 @@ function showModal(title, message, onConfirm = null, showCancel = false, onClose
|
|
|
3550
3552
|
}
|
|
3551
3553
|
}
|
|
3552
3554
|
|
|
3555
|
+
/**
|
|
3556
|
+
* Show the modal with a caller-built DOM node as its body.
|
|
3557
|
+
*
|
|
3558
|
+
* Additive companion to {@link showModal} for rich, structured content (e.g. the
|
|
3559
|
+
* SFCC ticket preview). The node is appended directly — never serialized through
|
|
3560
|
+
* innerHTML — so untrusted values built with textContent stay safe. The caller
|
|
3561
|
+
* supplies its own action controls inside `contentEl`, so the shared
|
|
3562
|
+
* confirm/cancel actions are hidden. `onClose` runs when the modal is dismissed,
|
|
3563
|
+
* letting the caller restore focus to the invoking element.
|
|
3564
|
+
*
|
|
3565
|
+
* @param {string} title - Modal header text.
|
|
3566
|
+
* @param {HTMLElement} contentEl - Caller-created body node.
|
|
3567
|
+
* @param {Function|null} onClose - Optional callback fired on dismiss.
|
|
3568
|
+
*/
|
|
3569
|
+
function showModalNode(title, contentEl, onClose = null) {
|
|
3570
|
+
if (pageModalTitle) pageModalTitle.textContent = title;
|
|
3571
|
+
replaceModalBody(contentEl);
|
|
3572
|
+
|
|
3573
|
+
currentConfirmCallback = null;
|
|
3574
|
+
currentCloseCallback = onClose;
|
|
3575
|
+
|
|
3576
|
+
if (pageModalActions) pageModalActions.classList.add('hidden');
|
|
3577
|
+
if (pageModal) {
|
|
3578
|
+
pageModal.style.display = 'block';
|
|
3579
|
+
} else {
|
|
3580
|
+
console.error('Modal element not found.');
|
|
3581
|
+
}
|
|
3582
|
+
}
|
|
3583
|
+
|
|
3584
|
+
/**
|
|
3585
|
+
* Replace the modal body with a caller-built DOM node without re-showing it.
|
|
3586
|
+
*
|
|
3587
|
+
* Used to transition the same open modal between states (processing → preview →
|
|
3588
|
+
* success/error). Clears the previous content with textContent then appends the
|
|
3589
|
+
* node — never innerHTML.
|
|
3590
|
+
* @param {HTMLElement} contentEl
|
|
3591
|
+
*/
|
|
3592
|
+
function replaceModalBody(contentEl) {
|
|
3593
|
+
if (!pageModalBody) return;
|
|
3594
|
+
pageModalBody.textContent = '';
|
|
3595
|
+
if (contentEl) pageModalBody.appendChild(contentEl);
|
|
3596
|
+
}
|
|
3597
|
+
|
|
3553
3598
|
/**
|
|
3554
3599
|
* Hides the modal dialog.
|
|
3555
3600
|
*/
|