@testin-official/xagent 0.3.7
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 +157 -0
- package/dist/action/client.d.ts +13 -0
- package/dist/action/client.d.ts.map +1 -0
- package/dist/action/client.js +28 -0
- package/dist/action/client.js.map +1 -0
- package/dist/action/mcp-content.d.ts +2 -0
- package/dist/action/mcp-content.d.ts.map +1 -0
- package/dist/action/mcp-content.js +116 -0
- package/dist/action/mcp-content.js.map +1 -0
- package/dist/action/protocol.d.ts +36 -0
- package/dist/action/protocol.d.ts.map +1 -0
- package/dist/action/protocol.js +29 -0
- package/dist/action/protocol.js.map +1 -0
- package/dist/assets/contracts/app-list.schema.json +31 -0
- package/dist/assets/contracts/app-upload.schema.json +45 -0
- package/dist/assets/contracts/app.schema.json +18 -0
- package/dist/assets/contracts/authoring-attempt-create.schema.json +12 -0
- package/dist/assets/contracts/authoring-attempt.schema.json +56 -0
- package/dist/assets/contracts/authoring-complete.schema.json +13 -0
- package/dist/assets/contracts/authoring-draft-attempt-create.schema.json +12 -0
- package/dist/assets/contracts/authoring-observation.schema.json +28 -0
- package/dist/assets/contracts/authoring-revision-create.schema.json +13 -0
- package/dist/assets/contracts/authoring-revision.schema.json +19 -0
- package/dist/assets/contracts/authoring-session-create.schema.json +11 -0
- package/dist/assets/contracts/authoring-session.schema.json +54 -0
- package/dist/assets/contracts/canonical-script.schema.json +219 -0
- package/dist/assets/contracts/compat-script.schema.json +380 -0
- package/dist/assets/contracts/device-list.schema.json +19 -0
- package/dist/assets/contracts/error.schema.json +47 -0
- package/dist/assets/contracts/execution-target.schema.json +55 -0
- package/dist/assets/contracts/fixtures/authoring-attempt-create.valid.json +4 -0
- package/dist/assets/contracts/fixtures/authoring-attempt.passed.json +16 -0
- package/dist/assets/contracts/fixtures/authoring-draft-attempt-create.valid.json +10 -0
- package/dist/assets/contracts/fixtures/authoring-observation.valid.json +7 -0
- package/dist/assets/contracts/fixtures/authoring-revision.valid.json +16 -0
- package/dist/assets/contracts/fixtures/authoring-session.active.json +12 -0
- package/dist/assets/contracts/fixtures/canonical-script.valid.json +17 -0
- package/dist/assets/contracts/fixtures/ci-exit-status-cases.json +44 -0
- package/dist/assets/contracts/fixtures/command-mutual-exclusion-cases.json +20 -0
- package/dist/assets/contracts/fixtures/compat-script.all-platform-actions.yaml +227 -0
- package/dist/assets/contracts/fixtures/execution-target.both.invalid.json +7 -0
- package/dist/assets/contracts/fixtures/execution-target.concurrency-two.invalid.json +4 -0
- package/dist/assets/contracts/fixtures/execution-target.count-two.invalid.json +6 -0
- package/dist/assets/contracts/fixtures/execution-target.dynamic.valid.json +12 -0
- package/dist/assets/contracts/fixtures/execution-target.fixed.valid.json +4 -0
- package/dist/assets/contracts/fixtures/execution-target.multiple-devices.invalid.json +4 -0
- package/dist/assets/contracts/fixtures/execution-target.multiple-filters.invalid.json +7 -0
- package/dist/assets/contracts/fixtures/execution-target.strategy-all.invalid.json +6 -0
- package/dist/assets/contracts/fixtures/idempotency.conflict.json +26 -0
- package/dist/assets/contracts/fixtures/idempotency.same-request.json +26 -0
- package/dist/assets/contracts/fixtures/principal.personal.json +23 -0
- package/dist/assets/contracts/fixtures/principal.project-ci.json +20 -0
- package/dist/assets/contracts/fixtures/project-config.no-default.valid.json +9 -0
- package/dist/assets/contracts/fixtures/project-config.secret.invalid.json +10 -0
- package/dist/assets/contracts/fixtures/project-config.target-name.invalid.json +10 -0
- package/dist/assets/contracts/fixtures/project-config.valid.json +22 -0
- package/dist/assets/contracts/fixtures/public-script.all-cli-actions.yaml +39 -0
- package/dist/assets/contracts/fixtures/public-script.invalid.json +8 -0
- package/dist/assets/contracts/fixtures/public-script.valid.json +17 -0
- package/dist/assets/contracts/fixtures/run-create-v2.device-id.invalid.json +16 -0
- package/dist/assets/contracts/fixtures/run-create.personal-upload.valid.json +20 -0
- package/dist/assets/contracts/fixtures/run-create.single-device.json +19 -0
- package/dist/assets/contracts/fixtures/run-create.target.valid.json +22 -0
- package/dist/assets/contracts/fixtures/run.queued.json +19 -0
- package/dist/assets/contracts/fixtures/run.target.queued.json +38 -0
- package/dist/assets/contracts/fixtures/skill-catalog.valid.json +19 -0
- package/dist/assets/contracts/fixtures/skill-reference.valid.json +9 -0
- package/dist/assets/contracts/fixtures/skill.valid.json +10 -0
- package/dist/assets/contracts/fixtures/target-hash-cases.json +30 -0
- package/dist/assets/contracts/fixtures/target-preview.hash-mismatch.error.json +8 -0
- package/dist/assets/contracts/fixtures/target-preview.no-match.error.json +9 -0
- package/dist/assets/contracts/fixtures/target-preview.request.valid.json +9 -0
- package/dist/assets/contracts/fixtures/target-preview.success.json +18 -0
- package/dist/assets/contracts/fixtures/target-preview.unavailable.json +18 -0
- package/dist/assets/contracts/principal.schema.json +72 -0
- package/dist/assets/contracts/project-config.schema.json +23 -0
- package/dist/assets/contracts/public-script.schema.json +397 -0
- package/dist/assets/contracts/run-create-v2.schema.json +78 -0
- package/dist/assets/contracts/run-create.schema.json +70 -0
- package/dist/assets/contracts/run.schema.json +137 -0
- package/dist/assets/contracts/skill-catalog.schema.json +15 -0
- package/dist/assets/contracts/skill-reference.schema.json +17 -0
- package/dist/assets/contracts/skill-summary.schema.json +28 -0
- package/dist/assets/contracts/skill.schema.json +30 -0
- package/dist/assets/contracts/target-preview.schema.json +75 -0
- package/dist/assets/integrations/manifest.json +17 -0
- package/dist/assets/integrations/xagent-skill/SKILL.md +28 -0
- package/dist/assets/integrations/xagent-skill/agents/openai.yaml +4 -0
- package/dist/assets/integrations/xagent-skill/references/cli-mcp-interop.md +10 -0
- package/dist/assets/integrations/xagent-skill/references/host-adapters.md +9 -0
- package/dist/assets/integrations/xagent-skill/references/installation.md +10 -0
- package/dist/assets/integrations/xagent-skill/references/privacy.md +3 -0
- package/dist/assets/integrations/xagent-skill/references/routing.md +32 -0
- package/dist/assets/integrations/xagent-skill/scripts/install-cli.ps1 +5 -0
- package/dist/assets/integrations/xagent-skill/scripts/install-cli.sh +6 -0
- package/dist/assets/skills/xagent-analyze-failure/SKILL.md +13 -0
- package/dist/assets/skills/xagent-analyze-failure/agents/openai.yaml +4 -0
- package/dist/assets/skills/xagent-analyze-failure/references/failure-classification.md +20 -0
- package/dist/assets/skills/xagent-author-test/SKILL.md +19 -0
- package/dist/assets/skills/xagent-author-test/agents/openai.yaml +4 -0
- package/dist/assets/skills/xagent-author-test/references/authoring-workflow.md +41 -0
- package/dist/assets/skills/xagent-author-test/references/host-interaction-adapters.md +81 -0
- package/dist/assets/skills/xagent-author-test/references/interaction-modes.md +97 -0
- package/dist/assets/skills/xagent-author-test/references/interactive-steering.md +57 -0
- package/dist/assets/skills/xagent-author-test/references/script-actions.md +34 -0
- package/dist/assets/skills/xagent-author-test/references/script-format.md +100 -0
- package/dist/assets/skills/xagent-cli/SKILL.md +31 -0
- package/dist/assets/skills/xagent-cli/agents/openai.yaml +4 -0
- package/dist/assets/skills/xagent-cli/references/capability-routing.md +36 -0
- package/dist/assets/skills/xagent-cli/references/cli-commands.md +23 -0
- package/dist/assets/skills/xagent-cli/references/failure-routing.md +18 -0
- package/dist/assets/skills/xagent-cli/references/host-modes.md +21 -0
- package/dist/assets/skills/xagent-cli/references/mcp-tools.md +26 -0
- package/dist/assets/skills/xagent-cli/references/permissions.md +17 -0
- package/dist/assets/skills/xagent-explore-device/SKILL.md +26 -0
- package/dist/assets/skills/xagent-explore-device/agents/openai.yaml +4 -0
- package/dist/assets/skills/xagent-explore-device/references/actions.md +24 -0
- package/dist/assets/skills/xagent-explore-device/references/single-action-protocol.md +59 -0
- package/dist/assets/skills/xagent-explore-device/references/tool-adapters.md +32 -0
- package/dist/assets/skills/xagent-repair-test/SKILL.md +16 -0
- package/dist/assets/skills/xagent-repair-test/agents/openai.yaml +4 -0
- package/dist/assets/skills/xagent-repair-test/references/repair-workflow.md +21 -0
- package/dist/assets/skills/xagent-run-test/SKILL.md +16 -0
- package/dist/assets/skills/xagent-run-test/agents/openai.yaml +4 -0
- package/dist/assets/skills/xagent-run-test/references/execution-modes.md +23 -0
- package/dist/assets/skills/xagent-run-test/references/result-status.md +13 -0
- package/dist/assets/skills/xagent-test-report/SKILL.md +20 -0
- package/dist/assets/skills/xagent-test-report/agents/openai.yaml +4 -0
- package/dist/assets/skills/xagent-test-report/references/evidence-policy.md +20 -0
- package/dist/assets/skills/xagent-test-report/references/report-template.md +41 -0
- package/dist/assets/skills/xagent-test-report/references/result-classification.md +13 -0
- package/dist/authoring/draft-store.d.ts +19 -0
- package/dist/authoring/draft-store.d.ts.map +1 -0
- package/dist/authoring/draft-store.js +104 -0
- package/dist/authoring/draft-store.js.map +1 -0
- package/dist/authoring/session-lease.d.ts +64 -0
- package/dist/authoring/session-lease.d.ts.map +1 -0
- package/dist/authoring/session-lease.js +190 -0
- package/dist/authoring/session-lease.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +529 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/credentials.d.ts +16 -0
- package/dist/config/credentials.d.ts.map +1 -0
- package/dist/config/credentials.js +93 -0
- package/dist/config/credentials.js.map +1 -0
- package/dist/config/store.d.ts +37 -0
- package/dist/config/store.d.ts.map +1 -0
- package/dist/config/store.js +142 -0
- package/dist/config/store.js.map +1 -0
- package/dist/core/assets.d.ts +5 -0
- package/dist/core/assets.d.ts.map +1 -0
- package/dist/core/assets.js +46 -0
- package/dist/core/assets.js.map +1 -0
- package/dist/core/errors.d.ts +19 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +36 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/interrupt.d.ts +8 -0
- package/dist/core/interrupt.d.ts.map +1 -0
- package/dist/core/interrupt.js +54 -0
- package/dist/core/interrupt.js.map +1 -0
- package/dist/core/json.d.ts +5 -0
- package/dist/core/json.d.ts.map +1 -0
- package/dist/core/json.js +21 -0
- package/dist/core/json.js.map +1 -0
- package/dist/core/version.d.ts +8 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +8 -0
- package/dist/core/version.js.map +1 -0
- package/dist/integrations/manager.d.ts +12 -0
- package/dist/integrations/manager.d.ts.map +1 -0
- package/dist/integrations/manager.js +218 -0
- package/dist/integrations/manager.js.map +1 -0
- package/dist/integrations/routing.d.ts +105 -0
- package/dist/integrations/routing.d.ts.map +1 -0
- package/dist/integrations/routing.js +85 -0
- package/dist/integrations/routing.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +69 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +30 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +345 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/project/config.d.ts +15 -0
- package/dist/project/config.d.ts.map +1 -0
- package/dist/project/config.js +46 -0
- package/dist/project/config.js.map +1 -0
- package/dist/run/progress.d.ts +5 -0
- package/dist/run/progress.d.ts.map +1 -0
- package/dist/run/progress.js +29 -0
- package/dist/run/progress.js.map +1 -0
- package/dist/script/service.d.ts +42 -0
- package/dist/script/service.d.ts.map +1 -0
- package/dist/script/service.js +457 -0
- package/dist/script/service.js.map +1 -0
- package/dist/sdk/authoring.d.ts +19 -0
- package/dist/sdk/authoring.d.ts.map +1 -0
- package/dist/sdk/authoring.js +43 -0
- package/dist/sdk/authoring.js.map +1 -0
- package/dist/sdk/client.d.ts +49 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/sdk/client.js +241 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/skills/catalog.d.ts +7 -0
- package/dist/skills/catalog.d.ts.map +1 -0
- package/dist/skills/catalog.js +59 -0
- package/dist/skills/catalog.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interrupt.js","sourceRoot":"","sources":["../../src/core/interrupt.ts"],"names":[],"mappings":"AASA,2EAA2E;AAC3E,kEAAkE;AAClE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,0EAA0E;AAC1E,4EAA4E;AAC5E,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;AAC7C,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAyB;IACnD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,OAAO,EAAE,CAAC;IACV,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,OAAO;IACd,IAAI,SAAS;QAAE,OAAO;IACtB,SAAS,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAU,EAAE,CAAC;QACpD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,MAAc;IAClC,0EAA0E;IAC1E,mEAAmE;IACnE,IAAI,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/C,OAAO,GAAG,IAAI,CAAC;IAEf,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,4CAA4C,CAAC,CAAC;QAC9E,8DAA8D;QAC9D,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBAC/C,IAAI,CAAC;oBAAC,MAAM,OAAO,EAAE,CAAC;gBAAC,CAAC;gBACxB,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,OAAO,IAAI,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function stableValue(value: unknown): unknown;
|
|
2
|
+
export declare function stableJson(value: unknown): string;
|
|
3
|
+
export declare function sha256Text(value: string): string;
|
|
4
|
+
export declare function hashJson(value: unknown): string;
|
|
5
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/core/json.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUnD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
export function stableValue(value) {
|
|
3
|
+
if (Array.isArray(value))
|
|
4
|
+
return value.map(stableValue);
|
|
5
|
+
if (value !== null && typeof value === "object") {
|
|
6
|
+
return Object.fromEntries(Object.entries(value)
|
|
7
|
+
.sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
|
|
8
|
+
.map(([key, item]) => [key, stableValue(item)]));
|
|
9
|
+
}
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
export function stableJson(value) {
|
|
13
|
+
return JSON.stringify(stableValue(value));
|
|
14
|
+
}
|
|
15
|
+
export function sha256Text(value) {
|
|
16
|
+
return createHash("sha256").update(value, "utf8").digest("hex");
|
|
17
|
+
}
|
|
18
|
+
export function hashJson(value) {
|
|
19
|
+
return sha256Text(stableJson(value));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/core/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACnE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAClD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const VERSION = "0.3.7";
|
|
2
|
+
export declare const DEVELOPER_API_VERSION = "v1";
|
|
3
|
+
export declare const CONFIG_SCHEMA_VERSION = "xagent-config/v1";
|
|
4
|
+
export declare const PROJECT_SCHEMA_VERSION = "xagent-project/v1";
|
|
5
|
+
export declare const PRINCIPAL_SCHEMA_VERSION = "xagent-principal/v1";
|
|
6
|
+
export declare const PUBLIC_SCRIPT_SCHEMA_VERSION = "xagent-script/v1";
|
|
7
|
+
export declare const CANONICAL_SCRIPT_SCHEMA_VERSION = "xagent-canonical/v1";
|
|
8
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AACxD,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,+BAA+B,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const VERSION = "0.3.7";
|
|
2
|
+
export const DEVELOPER_API_VERSION = "v1";
|
|
3
|
+
export const CONFIG_SCHEMA_VERSION = "xagent-config/v1";
|
|
4
|
+
export const PROJECT_SCHEMA_VERSION = "xagent-project/v1";
|
|
5
|
+
export const PRINCIPAL_SCHEMA_VERSION = "xagent-principal/v1";
|
|
6
|
+
export const PUBLIC_SCRIPT_SCHEMA_VERSION = "xagent-script/v1";
|
|
7
|
+
export const CANONICAL_SCRIPT_SCHEMA_VERSION = "xagent-canonical/v1";
|
|
8
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,4BAA4B,GAAG,kBAAkB,CAAC;AAC/D,MAAM,CAAC,MAAM,+BAA+B,GAAG,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type WorkflowDomain } from "./routing.js";
|
|
2
|
+
export declare const HOSTS: readonly ["codex", "claude", "trae"];
|
|
3
|
+
export type Host = typeof HOSTS[number];
|
|
4
|
+
export declare function detectHost(host?: Host): Promise<Record<string, unknown>[]>;
|
|
5
|
+
export declare function installHost(host: Host, overwrite?: boolean): Promise<Record<string, unknown>>;
|
|
6
|
+
export declare function syncHost(host?: Host): Promise<Record<string, unknown>[]>;
|
|
7
|
+
export declare function uninstallHost(host: Host, force: boolean): Promise<Record<string, unknown>>;
|
|
8
|
+
export declare function doctorHost(host?: Host): Promise<Record<string, unknown>[]>;
|
|
9
|
+
export declare function verifySkillDirectory(directory: string): Promise<Record<string, unknown>>;
|
|
10
|
+
export declare function routeOutput(domain: string, profile?: string): Record<string, unknown>;
|
|
11
|
+
export declare function mcpConfigSnippet(host: Host, profile: string, domain: WorkflowDomain): Record<string, unknown>;
|
|
12
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/integrations/manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuG,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAExJ,eAAO,MAAM,KAAK,sCAAuC,CAAC;AAC1D,MAAM,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;AA8ExC,wBAAsB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAWhF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAejG;AAED,wBAAsB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAO9E;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAOhG;AAED,wBAAsB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAiBhF;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkB9F;AAaD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcrF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW7G"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { cp, mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { integrationRoot } from "../core/assets.js";
|
|
5
|
+
import { VERSION } from "../core/version.js";
|
|
6
|
+
import { sha256Text } from "../core/json.js";
|
|
7
|
+
import { DEFAULT_WORKFLOW_DOMAIN, USER_WORKFLOW_ROUTES, WORKFLOW_ROUTES, routeForDomain, routeTableCanonical } from "./routing.js";
|
|
8
|
+
export const HOSTS = ["codex", "claude", "trae"];
|
|
9
|
+
function home() { return os.homedir(); }
|
|
10
|
+
function hostSpec(host) {
|
|
11
|
+
if (host === "codex") {
|
|
12
|
+
const root = process.env.CODEX_HOME || path.join(home(), ".codex");
|
|
13
|
+
return { name: host, root, skillDirectory: path.join(root, "skills", "xagent-skill"), configCandidates: [path.join(root, "config.toml"), path.join(root, "config.json")] };
|
|
14
|
+
}
|
|
15
|
+
if (host === "claude") {
|
|
16
|
+
const root = process.env.CLAUDE_CONFIG_DIR || path.join(home(), ".claude");
|
|
17
|
+
return { name: host, root, skillDirectory: path.join(root, "skills", "xagent-skill"), configCandidates: [path.join(root, "settings.json"), path.join(root, "mcp.json")] };
|
|
18
|
+
}
|
|
19
|
+
const root = process.env.TRAE_CONFIG_DIR || path.join(home(), ".trae");
|
|
20
|
+
return { name: host, root, skillDirectory: path.join(root, "skills", "xagent-skill"), configCandidates: [path.join(root, "settings.json"), path.join(root, "mcp.json")] };
|
|
21
|
+
}
|
|
22
|
+
async function assetFiles() {
|
|
23
|
+
const root = await integrationRoot();
|
|
24
|
+
const files = [];
|
|
25
|
+
async function visit(directory) {
|
|
26
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
27
|
+
const absolute = path.join(directory, entry.name);
|
|
28
|
+
if (entry.isDirectory())
|
|
29
|
+
await visit(absolute);
|
|
30
|
+
else
|
|
31
|
+
files.push(absolute);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
await visit(path.join(root, "xagent-skill"));
|
|
35
|
+
return files.sort();
|
|
36
|
+
}
|
|
37
|
+
async function packageManifest() {
|
|
38
|
+
const root = await integrationRoot();
|
|
39
|
+
return JSON.parse(await readFile(path.join(root, "manifest.json"), "utf8"));
|
|
40
|
+
}
|
|
41
|
+
async function installationPayload(host, overwrite) {
|
|
42
|
+
const spec = hostSpec(host);
|
|
43
|
+
const integration = await integrationRoot();
|
|
44
|
+
const sourceRoot = path.join(integration, "xagent-skill");
|
|
45
|
+
const manifest = await packageManifest();
|
|
46
|
+
const written = [];
|
|
47
|
+
const sourceFiles = await assetFiles();
|
|
48
|
+
for (const sourceFile of sourceFiles) {
|
|
49
|
+
const relative = path.relative(sourceRoot, sourceFile).replaceAll("\\", "/");
|
|
50
|
+
const destination = path.join(spec.skillDirectory, relative);
|
|
51
|
+
if (!overwrite) {
|
|
52
|
+
try {
|
|
53
|
+
await readFile(destination);
|
|
54
|
+
throw new Error(`destination_exists:${destination}`);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (String(error?.message).startsWith("destination_exists:"))
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
await mkdir(path.dirname(destination), { recursive: true });
|
|
62
|
+
await cp(path.join(sourceRoot, relative), destination, { force: true });
|
|
63
|
+
written.push(destination);
|
|
64
|
+
}
|
|
65
|
+
const manifestDestination = path.join(spec.skillDirectory, "manifest.json");
|
|
66
|
+
await mkdir(path.dirname(manifestDestination), { recursive: true });
|
|
67
|
+
await writeFile(manifestDestination, `${JSON.stringify({ ...manifest, skill_version: VERSION, minimum_cli_version: VERSION, route_table_hash: `sha256:${sha256Text(routeTableCanonical())}` }, null, 2)}\n`, "utf8");
|
|
68
|
+
written.push(manifestDestination);
|
|
69
|
+
const marker = {
|
|
70
|
+
schema_version: "xagent-skill-installation/v1",
|
|
71
|
+
host,
|
|
72
|
+
cli_version: VERSION,
|
|
73
|
+
skill_name: manifest.skill_name,
|
|
74
|
+
source_manifest: manifest,
|
|
75
|
+
installed_files: written.map((item) => path.relative(spec.skillDirectory, item).replaceAll("\\", "/")),
|
|
76
|
+
content_hash: sha256Text((await Promise.all(sourceFiles.map((file) => readFile(file, "utf8")))).join("\n")),
|
|
77
|
+
};
|
|
78
|
+
await writeFile(path.join(spec.skillDirectory, ".xagent-installation.json"), `${JSON.stringify(marker, null, 2)}\n`, "utf8");
|
|
79
|
+
return { written: [...written, path.join(spec.skillDirectory, ".xagent-installation.json")], spec, manifest };
|
|
80
|
+
}
|
|
81
|
+
export async function detectHost(host) {
|
|
82
|
+
const selected = host ? [host] : [...HOSTS];
|
|
83
|
+
const result = [];
|
|
84
|
+
for (const name of selected) {
|
|
85
|
+
const spec = hostSpec(name);
|
|
86
|
+
let installed = false;
|
|
87
|
+
let marker = null;
|
|
88
|
+
try {
|
|
89
|
+
marker = JSON.parse(await readFile(path.join(spec.skillDirectory, ".xagent-installation.json"), "utf8"));
|
|
90
|
+
installed = true;
|
|
91
|
+
}
|
|
92
|
+
catch { /* Not installed. */ }
|
|
93
|
+
result.push({ host: name, root: spec.root, skill_directory: spec.skillDirectory, installed, marker, config_candidates: spec.configCandidates });
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
export async function installHost(host, overwrite = false) {
|
|
98
|
+
const result = await installationPayload(host, overwrite);
|
|
99
|
+
return {
|
|
100
|
+
host,
|
|
101
|
+
installed: true,
|
|
102
|
+
cli_version: VERSION,
|
|
103
|
+
skill_directory: result.spec.skillDirectory,
|
|
104
|
+
written: result.written,
|
|
105
|
+
default_mcp_mode: "action",
|
|
106
|
+
mcp_config: {
|
|
107
|
+
recommended_default: mcpConfigSnippet(host, "", "action"),
|
|
108
|
+
isolated_servers: USER_WORKFLOW_ROUTES.map((route) => mcpConfigSnippet(host, "", route.domain)),
|
|
109
|
+
note: "Keep xagent-local/action as the default for stateful device control. Use a matching isolated server or restart MCP when changing domain.",
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export async function syncHost(host) {
|
|
114
|
+
const selected = host
|
|
115
|
+
? [host]
|
|
116
|
+
: (await detectHost()).filter((item) => item.installed).map((item) => item.host);
|
|
117
|
+
const result = [];
|
|
118
|
+
for (const name of selected)
|
|
119
|
+
result.push(await installHost(name, true));
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
export async function uninstallHost(host, force) {
|
|
123
|
+
if (!force)
|
|
124
|
+
throw new Error("uninstall_requires_force");
|
|
125
|
+
const spec = hostSpec(host);
|
|
126
|
+
const markerPath = path.join(spec.skillDirectory, ".xagent-installation.json");
|
|
127
|
+
try {
|
|
128
|
+
await readFile(markerPath);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return { host, removed: false, reason: "not_installed" };
|
|
132
|
+
}
|
|
133
|
+
await rm(spec.skillDirectory, { recursive: true, force: true });
|
|
134
|
+
return { host, removed: true, skill_directory: spec.skillDirectory };
|
|
135
|
+
}
|
|
136
|
+
export async function doctorHost(host) {
|
|
137
|
+
const detected = await detectHost(host);
|
|
138
|
+
return detected.map((item) => {
|
|
139
|
+
const marker = item.marker;
|
|
140
|
+
const packageManifest = marker?.source_manifest;
|
|
141
|
+
const minimum = String(packageManifest?.minimum_cli_version ?? "0.0.0");
|
|
142
|
+
return {
|
|
143
|
+
host: item.host,
|
|
144
|
+
skill_directory: item.skill_directory,
|
|
145
|
+
skill: item.installed ? "ok" : "not_installed",
|
|
146
|
+
cli_version: VERSION,
|
|
147
|
+
required_cli_version: minimum,
|
|
148
|
+
route_count: WORKFLOW_ROUTES.length,
|
|
149
|
+
mcp_config_candidates: item.config_candidates,
|
|
150
|
+
action_required: item.installed ? "none" : "import the xagent-skill directory into the Host",
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
export async function verifySkillDirectory(directory) {
|
|
155
|
+
const root = path.resolve(directory);
|
|
156
|
+
const manifest = JSON.parse(await readFile(path.join(root, "manifest.json"), "utf8"));
|
|
157
|
+
const expected = {
|
|
158
|
+
schema_version: "xagent-skill/v1",
|
|
159
|
+
skill_name: "xagent-skill",
|
|
160
|
+
minimum_cli_version: VERSION,
|
|
161
|
+
route_table_hash: `sha256:${sha256Text(routeTableCanonical())}`,
|
|
162
|
+
};
|
|
163
|
+
const checks = {
|
|
164
|
+
schema_version: manifest.schema_version === expected.schema_version,
|
|
165
|
+
skill_name: manifest.skill_name === expected.skill_name,
|
|
166
|
+
minimum_cli_version: versionAtLeast(VERSION, String(manifest.minimum_cli_version ?? "0.0.0")),
|
|
167
|
+
route_table_hash: manifest.route_table_hash === expected.route_table_hash,
|
|
168
|
+
skill_file: await fileExists(path.join(root, "SKILL.md")),
|
|
169
|
+
};
|
|
170
|
+
const valid = Object.values(checks).every(Boolean);
|
|
171
|
+
return { valid, checks, expected, actual: manifest };
|
|
172
|
+
}
|
|
173
|
+
async function fileExists(file) {
|
|
174
|
+
try {
|
|
175
|
+
await stat(file);
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function versionAtLeast(actual, minimum) {
|
|
183
|
+
const parse = (value) => value.replace(/^v/, "").split(".").slice(0, 3).map((part) => Number.parseInt(part, 10) || 0);
|
|
184
|
+
const left = parse(actual);
|
|
185
|
+
const right = parse(minimum);
|
|
186
|
+
for (let index = 0; index < 3; index += 1)
|
|
187
|
+
if (left[index] !== right[index])
|
|
188
|
+
return left[index] > right[index];
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
export function routeOutput(domain, profile) {
|
|
192
|
+
const route = routeForDomain(domain);
|
|
193
|
+
const args = ["--profile", profile || "<profile>", "mcp", "--mode", route.mode];
|
|
194
|
+
return {
|
|
195
|
+
domain: route.domain,
|
|
196
|
+
mcp_mode: route.mode,
|
|
197
|
+
skill: route.skill,
|
|
198
|
+
side_effects: route.side_effects,
|
|
199
|
+
description: route.description,
|
|
200
|
+
recommended_default_domain: DEFAULT_WORKFLOW_DOMAIN,
|
|
201
|
+
selection_required_before_side_effects: true,
|
|
202
|
+
mcp_command: { command: "xagent", args },
|
|
203
|
+
restart_required_when_changing_domain: true,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
export function mcpConfigSnippet(host, profile, domain) {
|
|
207
|
+
const route = routeForDomain(domain);
|
|
208
|
+
const name = `xagent-${route.mode}`;
|
|
209
|
+
return {
|
|
210
|
+
host,
|
|
211
|
+
server_name: name,
|
|
212
|
+
command: "xagent",
|
|
213
|
+
args: ["--profile", profile || "<profile>", "mcp", "--mode", route.mode],
|
|
214
|
+
skill: route.skill,
|
|
215
|
+
note: "Host must launch xagent directly and restart this isolated server when the domain changes.",
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/integrations/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export declare const WORKFLOW_ROUTES: readonly [{
|
|
2
|
+
readonly domain: "setup";
|
|
3
|
+
readonly mode: "setup";
|
|
4
|
+
readonly skill: "xagent-cli";
|
|
5
|
+
readonly side_effects: false;
|
|
6
|
+
readonly entry_only: true;
|
|
7
|
+
readonly description: "Read-only discovery, configuration, identity, application and device lookup.";
|
|
8
|
+
}, {
|
|
9
|
+
readonly domain: "action";
|
|
10
|
+
readonly mode: "action";
|
|
11
|
+
readonly skill: "xagent-explore-device";
|
|
12
|
+
readonly side_effects: true;
|
|
13
|
+
readonly entry_only: false;
|
|
14
|
+
readonly description: "Direct structured control of one acquired device; no YAML, Draft, Revision or Run.";
|
|
15
|
+
}, {
|
|
16
|
+
readonly domain: "author";
|
|
17
|
+
readonly mode: "author";
|
|
18
|
+
readonly skill: "xagent-author-test";
|
|
19
|
+
readonly side_effects: true;
|
|
20
|
+
readonly entry_only: false;
|
|
21
|
+
readonly description: "Create and execute local Draft Steps, then create one confirmed final Revision.";
|
|
22
|
+
}, {
|
|
23
|
+
readonly domain: "run";
|
|
24
|
+
readonly mode: "run";
|
|
25
|
+
readonly skill: "xagent-run-test";
|
|
26
|
+
readonly side_effects: true;
|
|
27
|
+
readonly entry_only: false;
|
|
28
|
+
readonly description: "Execute the exact existing YAML; do not edit YAML or create Drafts/Revisions.";
|
|
29
|
+
}, {
|
|
30
|
+
readonly domain: "analyze";
|
|
31
|
+
readonly mode: "analyze";
|
|
32
|
+
readonly skill: "xagent-analyze-failure";
|
|
33
|
+
readonly side_effects: false;
|
|
34
|
+
readonly entry_only: false;
|
|
35
|
+
readonly description: "Read-only inspection of existing Run or Attempt evidence.";
|
|
36
|
+
}, {
|
|
37
|
+
readonly domain: "repair";
|
|
38
|
+
readonly mode: "repair";
|
|
39
|
+
readonly skill: "xagent-repair-test";
|
|
40
|
+
readonly side_effects: true;
|
|
41
|
+
readonly entry_only: false;
|
|
42
|
+
readonly description: "Repair an explicitly selected YAML and create one confirmed successor Revision.";
|
|
43
|
+
}, {
|
|
44
|
+
readonly domain: "report";
|
|
45
|
+
readonly mode: "report";
|
|
46
|
+
readonly skill: "xagent-test-report";
|
|
47
|
+
readonly side_effects: false;
|
|
48
|
+
readonly entry_only: false;
|
|
49
|
+
readonly description: "Build a report from evidence already held by the Agent; no device or cloud workflow calls.";
|
|
50
|
+
}];
|
|
51
|
+
export type WorkflowRoute = (typeof WORKFLOW_ROUTES)[number];
|
|
52
|
+
export type WorkflowDomain = WorkflowRoute["domain"];
|
|
53
|
+
export type WorkflowMode = WorkflowRoute["mode"];
|
|
54
|
+
export declare const DEFAULT_WORKFLOW_DOMAIN: WorkflowDomain;
|
|
55
|
+
export declare const WORKFLOW_DOMAINS: WorkflowDomain[];
|
|
56
|
+
export declare const WORKFLOW_MODES: WorkflowMode[];
|
|
57
|
+
export declare const USER_WORKFLOW_ROUTES: ({
|
|
58
|
+
readonly domain: "action";
|
|
59
|
+
readonly mode: "action";
|
|
60
|
+
readonly skill: "xagent-explore-device";
|
|
61
|
+
readonly side_effects: true;
|
|
62
|
+
readonly entry_only: false;
|
|
63
|
+
readonly description: "Direct structured control of one acquired device; no YAML, Draft, Revision or Run.";
|
|
64
|
+
} | {
|
|
65
|
+
readonly domain: "author";
|
|
66
|
+
readonly mode: "author";
|
|
67
|
+
readonly skill: "xagent-author-test";
|
|
68
|
+
readonly side_effects: true;
|
|
69
|
+
readonly entry_only: false;
|
|
70
|
+
readonly description: "Create and execute local Draft Steps, then create one confirmed final Revision.";
|
|
71
|
+
} | {
|
|
72
|
+
readonly domain: "run";
|
|
73
|
+
readonly mode: "run";
|
|
74
|
+
readonly skill: "xagent-run-test";
|
|
75
|
+
readonly side_effects: true;
|
|
76
|
+
readonly entry_only: false;
|
|
77
|
+
readonly description: "Execute the exact existing YAML; do not edit YAML or create Drafts/Revisions.";
|
|
78
|
+
} | {
|
|
79
|
+
readonly domain: "analyze";
|
|
80
|
+
readonly mode: "analyze";
|
|
81
|
+
readonly skill: "xagent-analyze-failure";
|
|
82
|
+
readonly side_effects: false;
|
|
83
|
+
readonly entry_only: false;
|
|
84
|
+
readonly description: "Read-only inspection of existing Run or Attempt evidence.";
|
|
85
|
+
} | {
|
|
86
|
+
readonly domain: "repair";
|
|
87
|
+
readonly mode: "repair";
|
|
88
|
+
readonly skill: "xagent-repair-test";
|
|
89
|
+
readonly side_effects: true;
|
|
90
|
+
readonly entry_only: false;
|
|
91
|
+
readonly description: "Repair an explicitly selected YAML and create one confirmed successor Revision.";
|
|
92
|
+
} | {
|
|
93
|
+
readonly domain: "report";
|
|
94
|
+
readonly mode: "report";
|
|
95
|
+
readonly skill: "xagent-test-report";
|
|
96
|
+
readonly side_effects: false;
|
|
97
|
+
readonly entry_only: false;
|
|
98
|
+
readonly description: "Build a report from evidence already held by the Agent; no device or cloud workflow calls.";
|
|
99
|
+
})[];
|
|
100
|
+
export declare const USER_WORKFLOW_DOMAINS: WorkflowDomain[];
|
|
101
|
+
export declare function routeTableCanonical(): string;
|
|
102
|
+
export declare function routeForDomain(domain: string): WorkflowRoute;
|
|
103
|
+
export declare function routeForMode(mode: string): WorkflowRoute;
|
|
104
|
+
export declare function routeForSkill(skill: string): WorkflowRoute;
|
|
105
|
+
//# sourceMappingURL=routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/integrations/routing.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyDlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AACjD,eAAO,MAAM,uBAAuB,EAAE,cAAyB,CAAC;AAEhE,eAAO,MAAM,gBAAgB,EAAmD,cAAc,EAAE,CAAC;AACjG,eAAO,MAAM,cAAc,EAAiD,YAAY,EAAE,CAAC;AAC3F,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAuD,CAAC;AACzF,eAAO,MAAM,qBAAqB,EAAwD,cAAc,EAAE,CAAC;AAE3G,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAI5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAIxD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAI1D"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export const WORKFLOW_ROUTES = [
|
|
2
|
+
{
|
|
3
|
+
domain: "setup",
|
|
4
|
+
mode: "setup",
|
|
5
|
+
skill: "xagent-cli",
|
|
6
|
+
side_effects: false,
|
|
7
|
+
entry_only: true,
|
|
8
|
+
description: "Read-only discovery, configuration, identity, application and device lookup.",
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
domain: "action",
|
|
12
|
+
mode: "action",
|
|
13
|
+
skill: "xagent-explore-device",
|
|
14
|
+
side_effects: true,
|
|
15
|
+
entry_only: false,
|
|
16
|
+
description: "Direct structured control of one acquired device; no YAML, Draft, Revision or Run.",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
domain: "author",
|
|
20
|
+
mode: "author",
|
|
21
|
+
skill: "xagent-author-test",
|
|
22
|
+
side_effects: true,
|
|
23
|
+
entry_only: false,
|
|
24
|
+
description: "Create and execute local Draft Steps, then create one confirmed final Revision.",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
domain: "run",
|
|
28
|
+
mode: "run",
|
|
29
|
+
skill: "xagent-run-test",
|
|
30
|
+
side_effects: true,
|
|
31
|
+
entry_only: false,
|
|
32
|
+
description: "Execute the exact existing YAML; do not edit YAML or create Drafts/Revisions.",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
domain: "analyze",
|
|
36
|
+
mode: "analyze",
|
|
37
|
+
skill: "xagent-analyze-failure",
|
|
38
|
+
side_effects: false,
|
|
39
|
+
entry_only: false,
|
|
40
|
+
description: "Read-only inspection of existing Run or Attempt evidence.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
domain: "repair",
|
|
44
|
+
mode: "repair",
|
|
45
|
+
skill: "xagent-repair-test",
|
|
46
|
+
side_effects: true,
|
|
47
|
+
entry_only: false,
|
|
48
|
+
description: "Repair an explicitly selected YAML and create one confirmed successor Revision.",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
domain: "report",
|
|
52
|
+
mode: "report",
|
|
53
|
+
skill: "xagent-test-report",
|
|
54
|
+
side_effects: false,
|
|
55
|
+
entry_only: false,
|
|
56
|
+
description: "Build a report from evidence already held by the Agent; no device or cloud workflow calls.",
|
|
57
|
+
},
|
|
58
|
+
];
|
|
59
|
+
export const DEFAULT_WORKFLOW_DOMAIN = "action";
|
|
60
|
+
export const WORKFLOW_DOMAINS = WORKFLOW_ROUTES.map((route) => route.domain);
|
|
61
|
+
export const WORKFLOW_MODES = WORKFLOW_ROUTES.map((route) => route.mode);
|
|
62
|
+
export const USER_WORKFLOW_ROUTES = WORKFLOW_ROUTES.filter((route) => !route.entry_only);
|
|
63
|
+
export const USER_WORKFLOW_DOMAINS = USER_WORKFLOW_ROUTES.map((route) => route.domain);
|
|
64
|
+
export function routeTableCanonical() {
|
|
65
|
+
return JSON.stringify(USER_WORKFLOW_ROUTES.map(({ domain, mode, skill, side_effects }) => ({ domain, mode, skill, side_effects })));
|
|
66
|
+
}
|
|
67
|
+
export function routeForDomain(domain) {
|
|
68
|
+
const route = USER_WORKFLOW_ROUTES.find((item) => item.domain === domain);
|
|
69
|
+
if (!route)
|
|
70
|
+
throw new Error(`Unknown XAgent workflow domain: ${domain}`);
|
|
71
|
+
return route;
|
|
72
|
+
}
|
|
73
|
+
export function routeForMode(mode) {
|
|
74
|
+
const route = WORKFLOW_ROUTES.find((item) => item.mode === mode);
|
|
75
|
+
if (!route)
|
|
76
|
+
throw new Error(`Unknown XAgent MCP mode: ${mode}`);
|
|
77
|
+
return route;
|
|
78
|
+
}
|
|
79
|
+
export function routeForSkill(skill) {
|
|
80
|
+
const route = WORKFLOW_ROUTES.find((item) => item.skill === skill);
|
|
81
|
+
if (!route)
|
|
82
|
+
throw new Error(`Unknown XAgent packaged Skill: ${skill}`);
|
|
83
|
+
return route;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/integrations/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { McpToolAdapter, type McpMode } from "./tools.js";
|
|
2
|
+
export declare function buildToolAdapter(profileName?: string, userConfigPath?: string): Promise<McpToolAdapter>;
|
|
3
|
+
export declare function runStdioServer(profileName?: string, userConfigPath?: string, adapter?: McpToolAdapter, mode?: McpMode): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAU1D,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAE7G;AAkBD,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,IAAI,GAAE,OAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrJ"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
5
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
6
|
+
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
7
|
+
import { ConfigStore } from "../config/store.js";
|
|
8
|
+
import { CredentialResolver } from "../config/credentials.js";
|
|
9
|
+
import { CliError, XAgentApiError } from "../core/errors.js";
|
|
10
|
+
import { XAgentClient } from "../sdk/client.js";
|
|
11
|
+
import { McpToolAdapter } from "./tools.js";
|
|
12
|
+
import { onInterrupt } from "../core/interrupt.js";
|
|
13
|
+
import { actionMcpContent } from "../action/mcp-content.js";
|
|
14
|
+
async function version() {
|
|
15
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
16
|
+
const payload = JSON.parse(await readFile(path.resolve(here, "../../package.json"), "utf8"));
|
|
17
|
+
return String(payload.version);
|
|
18
|
+
}
|
|
19
|
+
export async function buildToolAdapter(profileName, userConfigPath) {
|
|
20
|
+
return new McpToolAdapter(await buildClient(profileName, userConfigPath));
|
|
21
|
+
}
|
|
22
|
+
async function buildClient(profileName, userConfigPath) {
|
|
23
|
+
const profile = await new ConfigStore(userConfigPath).getProfile(profileName);
|
|
24
|
+
const token = await new CredentialResolver().resolve(profile);
|
|
25
|
+
return new XAgentClient(profile.data.base_url, token, profile.data.upload_base_url);
|
|
26
|
+
}
|
|
27
|
+
const MODE_INSTRUCTIONS = {
|
|
28
|
+
setup: "Setup mode is read-only except local validation. Inspect configuration, identity, apps, devices, and the XAgent routing Skill. Do not perform a domain workflow. Restart MCP with the explicit user-selected mode before side effects.",
|
|
29
|
+
action: "Action-only mode. Load only xagent-explore-device, acquire once and use its returned initial observation, relay the Session's observation console URL to the user once, execute structured actions, and release. Observe only when action evidence is missing, failed, or ambiguous. The host renews its active Session before expiry and releases it on interruption. Do not create YAML, Drafts, Revisions, Runs, or reports.",
|
|
30
|
+
author: "Author mode. Load only xagent-author-test, create a new local YAML draft, verify Draft Steps, and create one confirmed final Revision. The host renews its active Session before device side effects and releases it on completion, cancellation, or interruption. Do not use direct Actions or create a Run.",
|
|
31
|
+
run: "Run mode. Load only xagent-run-test and execute the exact existing YAML selected by the user. Do not edit YAML, use direct Actions, create Drafts or Revisions, or retry automatically.",
|
|
32
|
+
analyze: "Analyze mode is strictly read-only. Load only xagent-analyze-failure and inspect existing Run or Attempt evidence. Do not retry, cancel, edit, or create resources.",
|
|
33
|
+
repair: "Repair mode. Load only xagent-repair-test after explicit edit authorization, modify only the selected existing YAML, verify affected Draft Steps, and create one confirmed successor Revision. Do not create a Run.",
|
|
34
|
+
report: "Report mode is read-only and local. Load only xagent-test-report and use the Agent's already-collected test results and selected screenshots to write a report. Do not acquire, observe, execute, renew, release, or call cloud workflow tools.",
|
|
35
|
+
};
|
|
36
|
+
export async function runStdioServer(profileName, userConfigPath, adapter, mode = "action") {
|
|
37
|
+
const toolAdapter = adapter ?? new McpToolAdapter(undefined, () => buildClient(profileName, userConfigPath), mode);
|
|
38
|
+
let cleanup;
|
|
39
|
+
const releaseOwnedSessions = () => cleanup ??= toolAdapter.close();
|
|
40
|
+
const deregisterInterrupt = onInterrupt(releaseOwnedSessions);
|
|
41
|
+
const server = new Server({ name: "xagent", version: await version() }, {
|
|
42
|
+
capabilities: { tools: {} },
|
|
43
|
+
instructions: MODE_INSTRUCTIONS[mode],
|
|
44
|
+
});
|
|
45
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: toolAdapter.listTools() }));
|
|
46
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
47
|
+
try {
|
|
48
|
+
const result = await toolAdapter.call(request.params.name, request.params.arguments);
|
|
49
|
+
const content = mode === "action"
|
|
50
|
+
? await actionMcpContent(request.params.name, result)
|
|
51
|
+
: [{ type: "text", text: JSON.stringify(result) }];
|
|
52
|
+
return { content, structuredContent: result, isError: false };
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const known = error instanceof CliError || error instanceof XAgentApiError ? error.toJSON() : { code: "infrastructure_failed", message: "XAgent Tool failed" };
|
|
56
|
+
const payload = { error: known };
|
|
57
|
+
return { content: [{ type: "text", text: JSON.stringify(payload) }], structuredContent: payload, isError: true };
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
server.onclose = () => { void releaseOwnedSessions(); deregisterInterrupt(); };
|
|
61
|
+
try {
|
|
62
|
+
await server.connect(new StdioServerTransport());
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
deregisterInterrupt();
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|