@bridge_gpt/mcp-server 0.2.50 → 0.2.51
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 +7 -7
- package/build/conduct-epic/bridge-client.js +115 -1
- package/build/conduct-epic/cli.js +351 -33
- package/build/conduct-epic/cut-protocol.js +51 -0
- package/build/doctor.js +190 -0
- package/build/epic-integration-pr.js +280 -0
- package/build/executor/job-runner.js +7 -1
- package/build/executor/merge-job.js +46 -1
- package/build/index.js +71 -24
- package/build/pipelines.generated.js +7 -1
- package/build/plan-epic-conductor-eligibility.js +183 -0
- package/build/readme.generated.js +1 -1
- package/build/setup-epic.js +32 -0
- package/build/sfcc/reads-custom-object-def.js +10 -13
- package/build/sfcc/reads-site-preference.js +5 -5
- package/build/sfcc/reads-system-object.js +4 -4
- package/build/sfcc/writes-custom-object-def.js +7 -7
- package/build/sfcc/writes-site-preference.js +4 -3
- package/build/sfcc/writes-system-object.js +7 -6
- package/build/version.generated.js +3 -3
- package/package.json +3 -2
- package/pipelines/plan-epic.json +5 -0
|
@@ -50,11 +50,10 @@ const READ_ANNOTATIONS = {
|
|
|
50
50
|
// ---------------------------------------------------------------------------
|
|
51
51
|
// Input schemas
|
|
52
52
|
// ---------------------------------------------------------------------------
|
|
53
|
-
const OBJECT_TYPE_DISCOVERY_HINT = 'Known custom object type id (e.g. starting with "c_").
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"count matches that row's attribute_definition_count.";
|
|
53
|
+
const OBJECT_TYPE_DISCOVERY_HINT = 'Known custom object type id (e.g. starting with "c_"). ' +
|
|
54
|
+
"Type ids aren't enumerable; find via system_object_list projection=full. " +
|
|
55
|
+
"Match by display_name + attribute_definition_count per custom type, then " +
|
|
56
|
+
"confirm this tool's returned attribute count matches that row's count.";
|
|
58
57
|
const customObjectAttributesGetInput = z.object({
|
|
59
58
|
object_type: z.string().describe(OBJECT_TYPE_DISCOVERY_HINT),
|
|
60
59
|
projection: projectionInputFor("attribute_collection"),
|
|
@@ -139,20 +138,18 @@ function buildCustomObjectAttributeSearchHandler(gateDeps, getDocsDir) {
|
|
|
139
138
|
export function registerSfccCustomObjectDefReadTools(registerTool, deps) {
|
|
140
139
|
const { gateDeps, getDocsDir } = deps;
|
|
141
140
|
registerTool("custom_object_definition_attributes_get", {
|
|
142
|
-
description: "Retrieve attribute
|
|
141
|
+
description: "Retrieve the FULL attribute-definition set for a KNOWN custom object type via " +
|
|
143
142
|
"GET /custom_object_definitions/{type}/attribute_definitions " +
|
|
144
|
-
"(default_value withheld).
|
|
145
|
-
"
|
|
146
|
-
"confirm here. Type creation is v2 metadata-import only.",
|
|
143
|
+
"(default_value withheld). Type creation is v2 metadata-import only. " +
|
|
144
|
+
"Oversized output saved locally.",
|
|
147
145
|
inputSchema: customObjectAttributesGetInput,
|
|
148
146
|
annotations: READ_ANNOTATIONS,
|
|
149
147
|
}, buildCustomObjectAttributesGetHandler(gateDeps, getDocsDir));
|
|
150
148
|
registerTool("custom_object_definition_attribute_search", {
|
|
151
|
-
description: "
|
|
149
|
+
description: "Filter the attribute-definition set within a KNOWN custom object type via " +
|
|
152
150
|
"POST /custom_object_definitions/{type}/attribute_definition_search " +
|
|
153
|
-
"(default_value withheld).
|
|
154
|
-
"
|
|
155
|
-
"confirm here. Type creation is v2 metadata-import only.",
|
|
151
|
+
"(default_value withheld). Type creation is v2 metadata-import only. " +
|
|
152
|
+
"Oversized output saved locally.",
|
|
156
153
|
inputSchema: customObjectAttributeSearchInput,
|
|
157
154
|
annotations: READ_ANNOTATIONS,
|
|
158
155
|
}, buildCustomObjectAttributeSearchHandler(gateDeps, getDocsDir));
|
|
@@ -226,15 +226,15 @@ export function registerSitePreferenceTools(registerTool, deps) {
|
|
|
226
226
|
description: "List custom site preference group ids from the developer sandbox via " +
|
|
227
227
|
"GET /system_object_definitions/SitePreferences/attribute_groups. Read-only; " +
|
|
228
228
|
"use this to discover group ids before site_preference_get or site_preference_search. " +
|
|
229
|
-
"Accepts optional `count` and `start` for paging. Oversized
|
|
229
|
+
"Accepts optional `count` and `start` for paging. Oversized output saved locally.",
|
|
230
230
|
inputSchema: sitePreferenceGroupListInput,
|
|
231
231
|
annotations: READ_ANNOTATIONS,
|
|
232
232
|
}, buildSitePreferenceGroupListHandler(gateDeps, getDocsDir));
|
|
233
233
|
registerTool("site_preference_get", {
|
|
234
|
-
description: "List preference
|
|
234
|
+
description: "List ALL preference ids in a group (match-all) from the developer sandbox via " +
|
|
235
235
|
"POST /site_preferences/preference_groups/{group}/sandbox/preference_search. " +
|
|
236
|
-
"Returns
|
|
237
|
-
"Read-only, sandbox-only. Optional start/count paging. Oversized
|
|
236
|
+
"Returns identifiers only, NOT values — 'unset' and 'empty string' are indistinguishable. " +
|
|
237
|
+
"Read-only, sandbox-only. Optional start/count paging. Oversized output saved locally.",
|
|
238
238
|
inputSchema: sitePreferenceGetInput,
|
|
239
239
|
annotations: READ_ANNOTATIONS,
|
|
240
240
|
}, buildSitePreferenceGetHandler(gateDeps, getDocsDir));
|
|
@@ -243,7 +243,7 @@ export function registerSitePreferenceTools(registerTool, deps) {
|
|
|
243
243
|
"POST /site_preferences/preference_groups/{group}/sandbox/preference_search. " +
|
|
244
244
|
"Returns ids only — this endpoint does not expose values. Read-only; v1 sandbox only. " +
|
|
245
245
|
"Pass a plain string for id-only text search or a structured OCAPI query. " +
|
|
246
|
-
"Oversized
|
|
246
|
+
"Oversized output saved locally.",
|
|
247
247
|
inputSchema: sitePreferenceSearchInput,
|
|
248
248
|
annotations: READ_ANNOTATIONS,
|
|
249
249
|
}, buildSitePreferenceSearchHandler(gateDeps, getDocsDir));
|
|
@@ -149,7 +149,7 @@ export function registerSystemObjectReadTools(registerTool, deps) {
|
|
|
149
149
|
"GET /system_object_definitions. Read-only. " +
|
|
150
150
|
"Accepts optional `count` and `start` for paging (OCAPI default pagination applies when omitted). " +
|
|
151
151
|
"Returns ids only by default; pass projection=full for all fields. " +
|
|
152
|
-
"Oversized
|
|
152
|
+
"Oversized output saved locally.",
|
|
153
153
|
inputSchema: systemObjectListInput,
|
|
154
154
|
annotations: READ_ANNOTATIONS,
|
|
155
155
|
}, buildSystemObjectListHandler(gateDeps, getDocsDir));
|
|
@@ -157,17 +157,17 @@ export function registerSystemObjectReadTools(registerTool, deps) {
|
|
|
157
157
|
description: "Retrieve a system object type definition from the developer sandbox. Read-only. " +
|
|
158
158
|
"GET /system_object_definitions/{type}. " +
|
|
159
159
|
"Prefer system_object_attribute_search for targeted attribute lookups. " +
|
|
160
|
-
"Oversized
|
|
160
|
+
"Oversized output saved locally.",
|
|
161
161
|
inputSchema: systemObjectGetInput,
|
|
162
162
|
annotations: READ_ANNOTATIONS,
|
|
163
163
|
}, buildSystemObjectGetHandler(gateDeps, getDocsDir));
|
|
164
164
|
registerTool("system_object_attribute_search", {
|
|
165
165
|
description: "Search attribute definitions for a system object type. Read-only. " +
|
|
166
166
|
"POST /system_object_definitions/{type}/attribute_definition_search. " +
|
|
167
|
-
"Use for targeted
|
|
167
|
+
"Use for targeted attribute lookups; returns each attribute's schema " +
|
|
168
168
|
"by default (default_value withheld). " +
|
|
169
169
|
"Pass a plain string for text search or a structured OCAPI query. " +
|
|
170
|
-
"Oversized
|
|
170
|
+
"Oversized output saved locally.",
|
|
171
171
|
inputSchema: systemObjectAttributeSearchInput,
|
|
172
172
|
annotations: READ_ANNOTATIONS,
|
|
173
173
|
}, buildSystemObjectAttributeSearchHandler(gateDeps, getDocsDir));
|
|
@@ -37,9 +37,8 @@ const INSTANCE_DESCRIBE = "OCAPI instance context. Omit or pass \"sandbox\"; any
|
|
|
37
37
|
const createCustomObjectAttributeDefinitionInput = z.object({
|
|
38
38
|
object_type: z
|
|
39
39
|
.string()
|
|
40
|
-
.describe('Known custom object type identifier (must already exist
|
|
41
|
-
"
|
|
42
|
-
"definitions on a known type."),
|
|
40
|
+
.describe('Known custom object type identifier (must already exist; OCAPI cannot create ' +
|
|
41
|
+
"types). Type ids aren't enumerable; find via system_object_list projection=full."),
|
|
43
42
|
attribute_id: z
|
|
44
43
|
.string()
|
|
45
44
|
.describe("URL attribute-definition id. If the body also carries `id`, it must match."),
|
|
@@ -49,7 +48,8 @@ const createCustomObjectAttributeDefinitionInput = z.object({
|
|
|
49
48
|
const updateCustomObjectAttributeDefinitionInput = z.object({
|
|
50
49
|
object_type: z
|
|
51
50
|
.string()
|
|
52
|
-
.describe("Known custom object type identifier (must already exist
|
|
51
|
+
.describe("Known custom object type identifier (must already exist; OCAPI cannot create " +
|
|
52
|
+
"types). Type ids aren't enumerable; find via system_object_list projection=full."),
|
|
53
53
|
attribute_id: z.string().describe("URL attribute-definition id to update."),
|
|
54
54
|
patch: objectAttributeDefinitionPatchBodySchema.describe("Partial ObjectAttributeDefinition body; must change at least one field."),
|
|
55
55
|
instance: z.string().optional().describe(INSTANCE_DESCRIBE),
|
|
@@ -134,15 +134,15 @@ export function registerSfccCustomObjectDefWriteTools(registerTool, deps) {
|
|
|
134
134
|
registerTool("custom_object_definition_attribute_create", {
|
|
135
135
|
description: "Create an attribute definition on a KNOWN custom object type via " +
|
|
136
136
|
"PUT /custom_object_definitions/{type}/attribute_definitions/{id}. Sandbox-only, " +
|
|
137
|
-
"destructive; the type must pre-exist (OCAPI cannot create types).
|
|
138
|
-
"grant JSON
|
|
137
|
+
"destructive; the type must pre-exist (OCAPI cannot create types). " +
|
|
138
|
+
"403 → paste-ready grant JSON.",
|
|
139
139
|
inputSchema: createCustomObjectAttributeDefinitionInput,
|
|
140
140
|
annotations: WRITE_ANNOTATIONS,
|
|
141
141
|
}, buildCreateCustomObjectAttributeDefinitionHandler(gateDeps));
|
|
142
142
|
registerTool("custom_object_definition_attribute_update", {
|
|
143
143
|
description: "Update an attribute definition on a KNOWN custom object type via an ETag-conditional " +
|
|
144
144
|
"PATCH /custom_object_definitions/{type}/attribute_definitions/{id}. Sandbox-only, " +
|
|
145
|
-
"destructive; surfaces 409/412 conflicts
|
|
145
|
+
"destructive; surfaces 409/412 conflicts. 403 → paste-ready grant JSON.",
|
|
146
146
|
inputSchema: updateCustomObjectAttributeDefinitionInput,
|
|
147
147
|
annotations: WRITE_ANNOTATIONS,
|
|
148
148
|
}, buildUpdateCustomObjectAttributeDefinitionHandler(gateDeps));
|
|
@@ -92,9 +92,10 @@ export const SITE_PREFERENCE_WRITE_TOOL_NAMES = ["site_preference_values_set"];
|
|
|
92
92
|
export function registerSitePreferenceWriteTools(registerTool, deps) {
|
|
93
93
|
const { gateDeps } = deps;
|
|
94
94
|
registerTool("site_preference_values_set", {
|
|
95
|
-
description: "Set
|
|
96
|
-
"
|
|
97
|
-
"
|
|
95
|
+
description: "Set site-preference VALUES via PATCH /site_preferences/preference_groups/{group}/sandbox. " +
|
|
96
|
+
"Preference must already be defined via custom_preference_definition_create. Sandbox-only, " +
|
|
97
|
+
"destructive; flat c_-prefixed id→value map (string/number/boolean/string[]). " +
|
|
98
|
+
"Bad group → 404 CustomPreferenceGroupNotFoundException. 403 → paste-ready grant JSON.",
|
|
98
99
|
inputSchema: sitePreferenceValuesSetInput,
|
|
99
100
|
annotations: WRITE_ANNOTATIONS,
|
|
100
101
|
}, buildSitePreferenceValuesSetHandler(gateDeps));
|
|
@@ -276,42 +276,43 @@ export function registerSystemObjectWriteTools(registerTool, deps) {
|
|
|
276
276
|
registerTool("system_object_attribute_definition_create", {
|
|
277
277
|
description: "Create a system-object attribute definition (sandbox-only, destructive). " +
|
|
278
278
|
"PUT .../attribute_definitions/{id}; body id must equal URL id and system must be false. " +
|
|
279
|
-
"Returns 201.
|
|
279
|
+
"Returns 201. 403 → paste-ready grant JSON.",
|
|
280
280
|
inputSchema: createAttributeDefinitionInput,
|
|
281
281
|
annotations: WRITE_ANNOTATIONS,
|
|
282
282
|
}, buildCreateAttributeDefinitionHandler(gateDeps));
|
|
283
283
|
registerTool("system_object_attribute_definition_update", {
|
|
284
284
|
description: "Update a system-object attribute definition (sandbox-only, destructive). " +
|
|
285
285
|
"PATCH .../attribute_definitions/{id} via the ETag GET-then-If-Match round trip. " +
|
|
286
|
-
"Returns 200; surfaces 409/412 on ETag conflicts.
|
|
286
|
+
"Returns 200; surfaces 409/412 on ETag conflicts. 403 → paste-ready grant JSON.",
|
|
287
287
|
inputSchema: updateAttributeDefinitionInput,
|
|
288
288
|
annotations: WRITE_ANNOTATIONS,
|
|
289
289
|
}, buildUpdateAttributeDefinitionHandler(gateDeps));
|
|
290
290
|
registerTool("system_object_attribute_group_create", {
|
|
291
291
|
description: "Create a system-object attribute group (sandbox-only, destructive). " +
|
|
292
292
|
"PUT .../attribute_groups/{id} with a minimal body (display_name + internal). " +
|
|
293
|
-
"
|
|
293
|
+
"403 → paste-ready grant JSON.",
|
|
294
294
|
inputSchema: createAttributeGroupInput,
|
|
295
295
|
annotations: WRITE_ANNOTATIONS,
|
|
296
296
|
}, buildCreateAttributeGroupHandler(gateDeps));
|
|
297
297
|
registerTool("system_object_attribute_group_update", {
|
|
298
298
|
description: "Update a system-object attribute group (sandbox-only, destructive). " +
|
|
299
299
|
"PATCH .../attribute_groups/{id} via the ETag round trip (display_name and/or internal). " +
|
|
300
|
-
"
|
|
300
|
+
"403 → paste-ready grant JSON.",
|
|
301
301
|
inputSchema: updateAttributeGroupInput,
|
|
302
302
|
annotations: WRITE_ANNOTATIONS,
|
|
303
303
|
}, buildUpdateAttributeGroupHandler(gateDeps));
|
|
304
304
|
registerTool("system_object_attribute_assign_to_group", {
|
|
305
305
|
description: "Assign an attribute definition to an attribute group (sandbox-only, destructive). " +
|
|
306
306
|
"PUT .../attribute_groups/{group}/attribute_definitions/{def} with an empty body. " +
|
|
307
|
-
"
|
|
307
|
+
"403 → paste-ready grant JSON.",
|
|
308
308
|
inputSchema: assignAttributeToGroupInput,
|
|
309
309
|
annotations: WRITE_ANNOTATIONS,
|
|
310
310
|
}, buildAssignAttributeToGroupHandler(gateDeps));
|
|
311
311
|
registerTool("custom_preference_definition_create", {
|
|
312
312
|
description: "Create a custom preference definition (sandbox-only, destructive). " +
|
|
313
313
|
"PUT .../{SitePreferences|OrganizationPreferences}/attribute_definitions/{id}. " +
|
|
314
|
-
"Booleans resolve to null unless default_value is set.
|
|
314
|
+
"Booleans resolve to null unless default_value is set. After defining the schema, " +
|
|
315
|
+
"set its value with site_preference_values_set. 403 → paste-ready grant JSON.",
|
|
315
316
|
inputSchema: createCustomPreferenceDefinitionInput,
|
|
316
317
|
annotations: WRITE_ANNOTATIONS,
|
|
317
318
|
}, buildCreateCustomPreferenceDefinitionHandler(gateDeps));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// AUTO-GENERATED — do not edit manually. Regenerate with: npm run build
|
|
2
|
-
export const VERSION = "0.2.
|
|
3
|
-
export const BUILD_COMMIT = "
|
|
4
|
-
export const LAUNCHER_ARGS = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
2
|
+
export const VERSION = "0.2.51";
|
|
3
|
+
export const BUILD_COMMIT = "3cdbee6cfd9b";
|
|
4
|
+
export const LAUNCHER_ARGS = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.51", "serve"];
|
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.51",
|
|
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",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"build": "node scripts/bundle-version.js && node scripts/sync-readme-host-examples.js --check && node scripts/validate-packaged-command-references.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/sync-agent-mirrors.js && node scripts/bundle-esbuild.js",
|
|
27
27
|
"version": "node scripts/sync-readme-host-examples.js --write && git add -- README.md package.json package-lock.json && git commit -m \"chore(mcp-server): release $npm_package_version\" && git tag \"mcp-server/v$npm_package_version\"",
|
|
28
28
|
"check:version-generated": "node scripts/bundle-version.js && node scripts/check-version-generated.js",
|
|
29
|
+
"assert:release-identity": "node scripts/assert-release-identity.js",
|
|
29
30
|
"postbuild": "node scripts/prepend-shebang.cjs",
|
|
30
31
|
"start": "node build/index.js",
|
|
31
32
|
"test": "npm run test:normal && npm run test:module-mocks",
|
|
@@ -34,7 +35,7 @@
|
|
|
34
35
|
"test:integration": "node scripts/run-integration-tests.js",
|
|
35
36
|
"test:smoke": "node --test build/integration/packaged-cli-smoke.test.js",
|
|
36
37
|
"canary:agent-capabilities": "npm run build && node scripts/agent-capabilities-canary.mjs",
|
|
37
|
-
"prepublishOnly": "node scripts/bundle-assets.js && npm run build && node scripts/verify-shebang.cjs"
|
|
38
|
+
"prepublishOnly": "node scripts/bundle-assets.js && npm run build && node scripts/verify-shebang.cjs && npm run assert:release-identity"
|
|
38
39
|
},
|
|
39
40
|
"dependencies": {
|
|
40
41
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
package/pipelines/plan-epic.json
CHANGED
|
@@ -45,6 +45,11 @@
|
|
|
45
45
|
"instruction_file": "explore-epic-subtasks.md",
|
|
46
46
|
"description": "Perform focused exploration for each sub-task"
|
|
47
47
|
},
|
|
48
|
+
{
|
|
49
|
+
"type": "agent_task",
|
|
50
|
+
"instruction_file": "assess-conductor-eligibility.md",
|
|
51
|
+
"description": "Assessing conductor eligibility"
|
|
52
|
+
},
|
|
48
53
|
{
|
|
49
54
|
"type": "agent_task",
|
|
50
55
|
"instruction_file": "write-epic-summary.md",
|