@ghx-dev/core 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +212 -0
- package/dist/agent-interface/prompt/main-skill.d.ts +3 -0
- package/dist/agent-interface/prompt/main-skill.js +7 -0
- package/dist/agent-interface/prompt/main-skill.js.map +1 -0
- package/dist/agent-interface/tools/execute-tool.d.ts +16 -0
- package/dist/agent-interface/tools/execute-tool.js +7 -0
- package/dist/agent-interface/tools/execute-tool.js.map +1 -0
- package/dist/agent-interface/tools/explain-tool.d.ts +11 -0
- package/dist/agent-interface/tools/explain-tool.js +9 -0
- package/dist/agent-interface/tools/explain-tool.js.map +1 -0
- package/dist/agent-interface/tools/list-capabilities-tool.d.ts +7 -0
- package/dist/agent-interface/tools/list-capabilities-tool.js +9 -0
- package/dist/agent-interface/tools/list-capabilities-tool.js.map +1 -0
- package/dist/agent.d.ts +7 -0
- package/dist/agent.js +21 -0
- package/dist/agent.js.map +1 -0
- package/dist/chunk-2W4L5YCC.js +116 -0
- package/dist/chunk-2W4L5YCC.js.map +1 -0
- package/dist/chunk-3RAT5BCB.js +584 -0
- package/dist/chunk-3RAT5BCB.js.map +1 -0
- package/dist/chunk-3RJCF42N.js +16 -0
- package/dist/chunk-3RJCF42N.js.map +1 -0
- package/dist/chunk-573MDG3I.js +18 -0
- package/dist/chunk-573MDG3I.js.map +1 -0
- package/dist/chunk-5JRLVOF2.js +50 -0
- package/dist/chunk-5JRLVOF2.js.map +1 -0
- package/dist/chunk-B6RLMKS4.js +41 -0
- package/dist/chunk-B6RLMKS4.js.map +1 -0
- package/dist/chunk-BJHVAFTN.js +42 -0
- package/dist/chunk-BJHVAFTN.js.map +1 -0
- package/dist/chunk-D746VR3B.js +38 -0
- package/dist/chunk-D746VR3B.js.map +1 -0
- package/dist/chunk-DJIEG6K7.js +20 -0
- package/dist/chunk-DJIEG6K7.js.map +1 -0
- package/dist/chunk-DLKIQBK6.js +106 -0
- package/dist/chunk-DLKIQBK6.js.map +1 -0
- package/dist/chunk-EBRDO4Y6.js +31 -0
- package/dist/chunk-EBRDO4Y6.js.map +1 -0
- package/dist/chunk-FXN6IIT5.js +14 -0
- package/dist/chunk-FXN6IIT5.js.map +1 -0
- package/dist/chunk-GPU4P7UG.js +92 -0
- package/dist/chunk-GPU4P7UG.js.map +1 -0
- package/dist/chunk-MMG6CIKK.js +44 -0
- package/dist/chunk-MMG6CIKK.js.map +1 -0
- package/dist/chunk-MT4U5DYD.js +88 -0
- package/dist/chunk-MT4U5DYD.js.map +1 -0
- package/dist/chunk-NFF5VF4U.js +28 -0
- package/dist/chunk-NFF5VF4U.js.map +1 -0
- package/dist/chunk-Q4RTT3DV.js +209 -0
- package/dist/chunk-Q4RTT3DV.js.map +1 -0
- package/dist/chunk-QEAMC4IJ.js +34 -0
- package/dist/chunk-QEAMC4IJ.js.map +1 -0
- package/dist/chunk-QX34GTH6.js +30 -0
- package/dist/chunk-QX34GTH6.js.map +1 -0
- package/dist/chunk-QZZC53HF.js +38 -0
- package/dist/chunk-QZZC53HF.js.map +1 -0
- package/dist/chunk-RUQXGZ35.js +34 -0
- package/dist/chunk-RUQXGZ35.js.map +1 -0
- package/dist/chunk-TCLMLVUQ.js +38 -0
- package/dist/chunk-TCLMLVUQ.js.map +1 -0
- package/dist/chunk-TDTKOJKN.js +52 -0
- package/dist/chunk-TDTKOJKN.js.map +1 -0
- package/dist/chunk-UGWIZ3RI.js +7 -0
- package/dist/chunk-UGWIZ3RI.js.map +1 -0
- package/dist/chunk-UOJWOHRM.js +16 -0
- package/dist/chunk-UOJWOHRM.js.map +1 -0
- package/dist/chunk-VD5NXQP7.js +42 -0
- package/dist/chunk-VD5NXQP7.js.map +1 -0
- package/dist/chunk-W2TKG2UL.js +37 -0
- package/dist/chunk-W2TKG2UL.js.map +1 -0
- package/dist/chunk-W6ROKCY5.js +28 -0
- package/dist/chunk-W6ROKCY5.js.map +1 -0
- package/dist/chunk-WYSY75U7.js +156 -0
- package/dist/chunk-WYSY75U7.js.map +1 -0
- package/dist/chunk-YNNDBMNR.js +113 -0
- package/dist/chunk-YNNDBMNR.js.map +1 -0
- package/dist/chunk-YNQNHCRS.js +198 -0
- package/dist/chunk-YNQNHCRS.js.map +1 -0
- package/dist/chunk-YQDQX4BT.js +624 -0
- package/dist/chunk-YQDQX4BT.js.map +1 -0
- package/dist/cli/commands/capabilities-explain.d.ts +3 -0
- package/dist/cli/commands/capabilities-explain.js +10 -0
- package/dist/cli/commands/capabilities-explain.js.map +1 -0
- package/dist/cli/commands/capabilities-list.d.ts +3 -0
- package/dist/cli/commands/capabilities-list.js +10 -0
- package/dist/cli/commands/capabilities-list.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.js +7 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/routes.d.ts +3 -0
- package/dist/cli/commands/routes.js +7 -0
- package/dist/cli/commands/routes.js.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.js +31 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.js +7 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/formatters/json.d.ts +3 -0
- package/dist/cli/formatters/json.js +8 -0
- package/dist/cli/formatters/json.js.map +1 -0
- package/dist/cli/formatters/table.d.ts +3 -0
- package/dist/cli/formatters/table.js +8 -0
- package/dist/cli/formatters/table.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.js +118 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/contracts/envelope.d.ts +43 -0
- package/dist/core/contracts/envelope.js +1 -0
- package/dist/core/contracts/envelope.js.map +1 -0
- package/dist/core/contracts/task.d.ts +7 -0
- package/dist/core/contracts/task.js +1 -0
- package/dist/core/contracts/task.js.map +1 -0
- package/dist/core/contracts/tasks/check_run.annotations.list.d.ts +5 -0
- package/dist/core/contracts/tasks/check_run.annotations.list.js +8 -0
- package/dist/core/contracts/tasks/check_run.annotations.list.js.map +1 -0
- package/dist/core/contracts/tasks/issue.comments.list.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.comments.list.js +8 -0
- package/dist/core/contracts/tasks/issue.comments.list.js.map +1 -0
- package/dist/core/contracts/tasks/issue.list.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.list.js +8 -0
- package/dist/core/contracts/tasks/issue.list.js.map +1 -0
- package/dist/core/contracts/tasks/issue.view.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.view.js +8 -0
- package/dist/core/contracts/tasks/issue.view.js.map +1 -0
- package/dist/core/contracts/tasks/pr.checks.get_failed.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.checks.get_failed.js +8 -0
- package/dist/core/contracts/tasks/pr.checks.get_failed.js.map +1 -0
- package/dist/core/contracts/tasks/pr.comment.reply.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.comment.reply.js +8 -0
- package/dist/core/contracts/tasks/pr.comment.reply.js.map +1 -0
- package/dist/core/contracts/tasks/pr.comment.resolve.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.comment.resolve.js +8 -0
- package/dist/core/contracts/tasks/pr.comment.resolve.js.map +1 -0
- package/dist/core/contracts/tasks/pr.comment.unresolve.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.comment.unresolve.js +8 -0
- package/dist/core/contracts/tasks/pr.comment.unresolve.js.map +1 -0
- package/dist/core/contracts/tasks/pr.comments.list.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.comments.list.js +8 -0
- package/dist/core/contracts/tasks/pr.comments.list.js.map +1 -0
- package/dist/core/contracts/tasks/pr.diff.list_files.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.diff.list_files.js +8 -0
- package/dist/core/contracts/tasks/pr.diff.list_files.js.map +1 -0
- package/dist/core/contracts/tasks/pr.list.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.list.js +8 -0
- package/dist/core/contracts/tasks/pr.list.js.map +1 -0
- package/dist/core/contracts/tasks/pr.mergeability.view.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.mergeability.view.js +8 -0
- package/dist/core/contracts/tasks/pr.mergeability.view.js.map +1 -0
- package/dist/core/contracts/tasks/pr.ready_for_review.set.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.ready_for_review.set.js +8 -0
- package/dist/core/contracts/tasks/pr.ready_for_review.set.js.map +1 -0
- package/dist/core/contracts/tasks/pr.reviews.list.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.reviews.list.js +8 -0
- package/dist/core/contracts/tasks/pr.reviews.list.js.map +1 -0
- package/dist/core/contracts/tasks/pr.status.checks.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.status.checks.js +8 -0
- package/dist/core/contracts/tasks/pr.status.checks.js.map +1 -0
- package/dist/core/contracts/tasks/pr.view.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.view.js +8 -0
- package/dist/core/contracts/tasks/pr.view.js.map +1 -0
- package/dist/core/contracts/tasks/repo.view.d.ts +5 -0
- package/dist/core/contracts/tasks/repo.view.js +8 -0
- package/dist/core/contracts/tasks/repo.view.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_job.logs.analyze.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_job.logs.analyze.js +8 -0
- package/dist/core/contracts/tasks/workflow_job.logs.analyze.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_job.logs.get.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_job.logs.get.js +8 -0
- package/dist/core/contracts/tasks/workflow_job.logs.get.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_run.jobs.list.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_run.jobs.list.js +8 -0
- package/dist/core/contracts/tasks/workflow_run.jobs.list.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_runs.list.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_runs.list.js +8 -0
- package/dist/core/contracts/tasks/workflow_runs.list.js.map +1 -0
- package/dist/core/errors/codes.d.ts +13 -0
- package/dist/core/errors/codes.js +7 -0
- package/dist/core/errors/codes.js.map +1 -0
- package/dist/core/errors/map-error.d.ts +5 -0
- package/dist/core/errors/map-error.js +8 -0
- package/dist/core/errors/map-error.js.map +1 -0
- package/dist/core/errors/retryability.d.ts +3 -0
- package/dist/core/errors/retryability.js +8 -0
- package/dist/core/errors/retryability.js.map +1 -0
- package/dist/core/execute/execute.d.ts +28 -0
- package/dist/core/execute/execute.js +11 -0
- package/dist/core/execute/execute.js.map +1 -0
- package/dist/core/execution/adapters/cli-adapter.d.ts +22 -0
- package/dist/core/execution/adapters/cli-adapter.js +69 -0
- package/dist/core/execution/adapters/cli-adapter.js.map +1 -0
- package/dist/core/execution/adapters/cli-capability-adapter.d.ts +16 -0
- package/dist/core/execution/adapters/cli-capability-adapter.js +11 -0
- package/dist/core/execution/adapters/cli-capability-adapter.js.map +1 -0
- package/dist/core/execution/adapters/graphql-adapter.d.ts +25 -0
- package/dist/core/execution/adapters/graphql-adapter.js +44 -0
- package/dist/core/execution/adapters/graphql-adapter.js.map +1 -0
- package/dist/core/execution/adapters/graphql-capability-adapter.d.ts +20 -0
- package/dist/core/execution/adapters/graphql-capability-adapter.js +11 -0
- package/dist/core/execution/adapters/graphql-capability-adapter.js.map +1 -0
- package/dist/core/execution/adapters/rest-adapter.d.ts +3 -0
- package/dist/core/execution/adapters/rest-adapter.js +8 -0
- package/dist/core/execution/adapters/rest-adapter.js.map +1 -0
- package/dist/core/execution/cli/safe-runner.d.ts +12 -0
- package/dist/core/execution/cli/safe-runner.js +7 -0
- package/dist/core/execution/cli/safe-runner.js.map +1 -0
- package/dist/core/execution/normalizer.d.ts +13 -0
- package/dist/core/execution/normalizer.js +9 -0
- package/dist/core/execution/normalizer.js.map +1 -0
- package/dist/core/execution/preflight.d.ts +24 -0
- package/dist/core/execution/preflight.js +8 -0
- package/dist/core/execution/preflight.js.map +1 -0
- package/dist/core/registry/cards/check_run.annotations.list.yaml +35 -0
- package/dist/core/registry/cards/issue.comments.list.yaml +48 -0
- package/dist/core/registry/cards/issue.list.yaml +48 -0
- package/dist/core/registry/cards/issue.view.yaml +32 -0
- package/dist/core/registry/cards/pr.checks.get_failed.yaml +42 -0
- package/dist/core/registry/cards/pr.comment.reply.yaml +23 -0
- package/dist/core/registry/cards/pr.comment.resolve.yaml +22 -0
- package/dist/core/registry/cards/pr.comment.unresolve.yaml +22 -0
- package/dist/core/registry/cards/pr.comments.list.yaml +98 -0
- package/dist/core/registry/cards/pr.diff.list_files.yaml +43 -0
- package/dist/core/registry/cards/pr.list.yaml +48 -0
- package/dist/core/registry/cards/pr.mergeability.view.yaml +27 -0
- package/dist/core/registry/cards/pr.ready_for_review.set.yaml +24 -0
- package/dist/core/registry/cards/pr.reviews.list.yaml +47 -0
- package/dist/core/registry/cards/pr.status.checks.yaml +42 -0
- package/dist/core/registry/cards/pr.view.yaml +32 -0
- package/dist/core/registry/cards/repo.view.yaml +34 -0
- package/dist/core/registry/cards/workflow_job.logs.analyze.yaml +33 -0
- package/dist/core/registry/cards/workflow_job.logs.get.yaml +24 -0
- package/dist/core/registry/cards/workflow_run.jobs.list.yaml +35 -0
- package/dist/core/registry/cards/workflow_runs.list.yaml +45 -0
- package/dist/core/registry/index.d.ts +15 -0
- package/dist/core/registry/index.js +12 -0
- package/dist/core/registry/index.js.map +1 -0
- package/dist/core/registry/operation-card-schema.d.ts +167 -0
- package/dist/core/registry/operation-card-schema.js +7 -0
- package/dist/core/registry/operation-card-schema.js.map +1 -0
- package/dist/core/registry/schema-validator.d.ts +16 -0
- package/dist/core/registry/schema-validator.js +9 -0
- package/dist/core/registry/schema-validator.js.map +1 -0
- package/dist/core/registry/types.d.ts +51 -0
- package/dist/core/registry/types.js +1 -0
- package/dist/core/registry/types.js.map +1 -0
- package/dist/core/routing/capability-registry.d.ts +8 -0
- package/dist/core/routing/capability-registry.js +15 -0
- package/dist/core/routing/capability-registry.js.map +1 -0
- package/dist/core/routing/engine.d.ts +32 -0
- package/dist/core/routing/engine.js +23 -0
- package/dist/core/routing/engine.js.map +1 -0
- package/dist/core/routing/policy.d.ts +3 -0
- package/dist/core/routing/policy.js +7 -0
- package/dist/core/routing/policy.js.map +1 -0
- package/dist/core/routing/reason-codes.d.ts +4 -0
- package/dist/core/routing/reason-codes.js +15 -0
- package/dist/core/routing/reason-codes.js.map +1 -0
- package/dist/core/telemetry/logger.d.ts +8 -0
- package/dist/core/telemetry/logger.js +9 -0
- package/dist/core/telemetry/logger.js.map +1 -0
- package/dist/core/telemetry/metrics.d.ts +7 -0
- package/dist/core/telemetry/metrics.js +1 -0
- package/dist/core/telemetry/metrics.js.map +1 -0
- package/dist/gql/client.d.ts +183 -0
- package/dist/gql/client.js +17 -0
- package/dist/gql/client.js.map +1 -0
- package/dist/gql/generated/common-types.d.ts +36 -0
- package/dist/gql/generated/common-types.js +1 -0
- package/dist/gql/generated/common-types.js.map +1 -0
- package/dist/gql/operations/issue-comments-list.generated.d.ts +59 -0
- package/dist/gql/operations/issue-comments-list.generated.js +9 -0
- package/dist/gql/operations/issue-comments-list.generated.js.map +1 -0
- package/dist/gql/operations/issue-list.generated.d.ts +40 -0
- package/dist/gql/operations/issue-list.generated.js +9 -0
- package/dist/gql/operations/issue-list.generated.js.map +1 -0
- package/dist/gql/operations/issue-view.generated.d.ts +31 -0
- package/dist/gql/operations/issue-view.generated.js +9 -0
- package/dist/gql/operations/issue-view.generated.js.map +1 -0
- package/dist/gql/operations/pr-comment-reply.generated.d.ts +26 -0
- package/dist/gql/operations/pr-comment-reply.generated.js +25 -0
- package/dist/gql/operations/pr-comment-reply.generated.js.map +1 -0
- package/dist/gql/operations/pr-comment-resolve.generated.d.ts +26 -0
- package/dist/gql/operations/pr-comment-resolve.generated.js +24 -0
- package/dist/gql/operations/pr-comment-resolve.generated.js.map +1 -0
- package/dist/gql/operations/pr-comment-unresolve.generated.d.ts +26 -0
- package/dist/gql/operations/pr-comment-unresolve.generated.js +24 -0
- package/dist/gql/operations/pr-comment-unresolve.generated.js.map +1 -0
- package/dist/gql/operations/pr-comments-list.generated.d.ts +84 -0
- package/dist/gql/operations/pr-comments-list.generated.js +58 -0
- package/dist/gql/operations/pr-comments-list.generated.js.map +1 -0
- package/dist/gql/operations/pr-diff-list-files.generated.d.ts +42 -0
- package/dist/gql/operations/pr-diff-list-files.generated.js +9 -0
- package/dist/gql/operations/pr-diff-list-files.generated.js.map +1 -0
- package/dist/gql/operations/pr-list.generated.d.ts +40 -0
- package/dist/gql/operations/pr-list.generated.js +9 -0
- package/dist/gql/operations/pr-list.generated.js.map +1 -0
- package/dist/gql/operations/pr-reviews-list.generated.d.ts +64 -0
- package/dist/gql/operations/pr-reviews-list.generated.js +9 -0
- package/dist/gql/operations/pr-reviews-list.generated.js.map +1 -0
- package/dist/gql/operations/pr-view.generated.d.ts +31 -0
- package/dist/gql/operations/pr-view.generated.js +9 -0
- package/dist/gql/operations/pr-view.generated.js.map +1 -0
- package/dist/gql/operations/repo-view.generated.d.ts +33 -0
- package/dist/gql/operations/repo-view.generated.js +9 -0
- package/dist/gql/operations/repo-view.generated.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/constants.d.ts +3 -0
- package/dist/shared/constants.js +6 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/types.d.ts +3 -0
- package/dist/shared/types.js +1 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/shared/utils.d.ts +3 -0
- package/dist/shared/utils.js +8 -0
- package/dist/shared/utils.js.map +1 -0
- package/package.json +79 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Arye Kogan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# @ghx-dev/core
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@ghx-dev/core)
|
|
4
|
+
[](https://www.npmjs.com/package/@ghx-dev/core)
|
|
5
|
+
[](https://github.com/aryeko/ghx/blob/main/LICENSE)
|
|
6
|
+
|
|
7
|
+
CLI-first GitHub execution router for agents.
|
|
8
|
+
|
|
9
|
+
`@ghx-dev/core` exposes a typed execution engine that routes GitHub tasks across CLI and GraphQL, validates inputs/outputs against operation-card schemas, and returns a stable result envelope for deterministic agent workflows.
|
|
10
|
+
|
|
11
|
+
## Why @ghx-dev/core
|
|
12
|
+
|
|
13
|
+
- **Stable contract**: every task returns `{ ok, data, error, meta }`
|
|
14
|
+
- **Route-aware execution**: preferred route + fallback routes per capability
|
|
15
|
+
- **Schema validation**: runtime validation for task input/output
|
|
16
|
+
- **Typed clients**: typed GraphQL/GitHub client helpers
|
|
17
|
+
- **Agent-ready tools**: subpath exports for capability listing/explanation/execution wrappers
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pnpm add @ghx-dev/core
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Alternative package managers:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm i @ghx-dev/core
|
|
29
|
+
# or
|
|
30
|
+
yarn add @ghx-dev/core
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Quick Start (Library API)
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
import { createGithubClient, executeTask } from "@ghx-dev/core"
|
|
37
|
+
|
|
38
|
+
const githubToken = process.env.GITHUB_TOKEN
|
|
39
|
+
|
|
40
|
+
if (!githubToken) {
|
|
41
|
+
throw new Error("Missing GITHUB_TOKEN")
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const githubClient = createGithubClient({
|
|
45
|
+
async execute<TData>(query: string, variables?: Record<string, unknown>): Promise<TData> {
|
|
46
|
+
const response = await fetch("https://api.github.com/graphql", {
|
|
47
|
+
method: "POST",
|
|
48
|
+
headers: {
|
|
49
|
+
"content-type": "application/json",
|
|
50
|
+
authorization: `Bearer ${githubToken}`,
|
|
51
|
+
},
|
|
52
|
+
body: JSON.stringify({ query, variables: variables ?? {} }),
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
const payload = (await response.json()) as {
|
|
56
|
+
data?: TData
|
|
57
|
+
errors?: Array<{ message?: string }>
|
|
58
|
+
message?: string
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
throw new Error(payload.message ?? `GraphQL request failed (${response.status})`)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (payload.errors?.length) {
|
|
66
|
+
throw new Error(payload.errors[0]?.message ?? "GraphQL returned errors")
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (payload.data === undefined) {
|
|
70
|
+
throw new Error("GraphQL response missing data")
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return payload.data
|
|
74
|
+
},
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
const result = await executeTask(
|
|
78
|
+
{
|
|
79
|
+
task: "repo.view",
|
|
80
|
+
input: {
|
|
81
|
+
owner: "aryeko",
|
|
82
|
+
name: "ghx",
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
githubClient,
|
|
87
|
+
githubToken,
|
|
88
|
+
},
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
if (!result.ok) {
|
|
92
|
+
throw new Error(`${result.error?.code}: ${result.error?.message}`)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
console.log(result.data)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Agent Tools (`@ghx-dev/core/agent`)
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
import {
|
|
102
|
+
createExecuteTool,
|
|
103
|
+
explainCapability,
|
|
104
|
+
listCapabilities,
|
|
105
|
+
MAIN_SKILL_TEXT,
|
|
106
|
+
} from "@ghx-dev/core/agent"
|
|
107
|
+
|
|
108
|
+
const executeTool = createExecuteTool({
|
|
109
|
+
executeTask: async (request) => {
|
|
110
|
+
// delegate to your runtime integration
|
|
111
|
+
return { ok: true, data: request, meta: { capability_id: request.task } }
|
|
112
|
+
},
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
console.log(MAIN_SKILL_TEXT)
|
|
116
|
+
console.log(listCapabilities())
|
|
117
|
+
console.log(explainCapability("repo.view"))
|
|
118
|
+
await executeTool.execute("repo.view", { owner: "aryeko", name: "ghx" })
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## CLI
|
|
122
|
+
|
|
123
|
+
When installed globally (or executed via package manager), use:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
ghx run repo.view --input '{"owner":"aryeko","name":"ghx"}'
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Environment variables used by the CLI path:
|
|
130
|
+
|
|
131
|
+
- `GITHUB_TOKEN` or `GH_TOKEN` (required)
|
|
132
|
+
- `GITHUB_GRAPHQL_URL` (optional override)
|
|
133
|
+
- `GH_HOST` (optional; used to derive enterprise GraphQL endpoint)
|
|
134
|
+
|
|
135
|
+
## Built-in Capabilities
|
|
136
|
+
|
|
137
|
+
- `repo.view` - fetch repository metadata
|
|
138
|
+
- `issue.view` - fetch a single issue
|
|
139
|
+
- `issue.list` - list repository issues
|
|
140
|
+
- `issue.comments.list` - list issue comments with pagination
|
|
141
|
+
- `pr.view` - fetch a single pull request
|
|
142
|
+
- `pr.list` - list pull requests
|
|
143
|
+
- `pr.comments.list` - list pull request review threads/comments
|
|
144
|
+
- `pr.reviews.list` - list pull request reviews
|
|
145
|
+
- `pr.diff.list_files` - list changed files in a pull request
|
|
146
|
+
- `pr.status.checks` - list pull request checks and summary counts
|
|
147
|
+
- `pr.checks.get_failed` - list failed pull request checks
|
|
148
|
+
- `pr.mergeability.view` - fetch mergeability and review decision signals
|
|
149
|
+
- `pr.comment.reply` - reply to a pull request review thread
|
|
150
|
+
- `pr.comment.resolve` - resolve a pull request review thread
|
|
151
|
+
- `pr.comment.unresolve` - unresolve a pull request review thread
|
|
152
|
+
- `pr.ready_for_review.set` - mark draft/ready-for-review state
|
|
153
|
+
- `check_run.annotations.list` - list check run annotations
|
|
154
|
+
- `workflow_runs.list` - list workflow runs for a repository
|
|
155
|
+
- `workflow_run.jobs.list` - list jobs for a workflow run
|
|
156
|
+
- `workflow_job.logs.get` - fetch workflow job logs
|
|
157
|
+
- `workflow_job.logs.analyze` - analyze workflow job logs for error/warning summaries
|
|
158
|
+
|
|
159
|
+
## Public Exports
|
|
160
|
+
|
|
161
|
+
Root (`@ghx-dev/core`):
|
|
162
|
+
|
|
163
|
+
- `executeTask`
|
|
164
|
+
- `createGithubClient`, `createGraphqlClient`
|
|
165
|
+
- `listOperationCards`, `getOperationCard`
|
|
166
|
+
- `createSafeCliCommandRunner`
|
|
167
|
+
- core result/task types (`TaskRequest`, `ResultEnvelope`, `ResultError`, `ResultMeta`, `AttemptMeta`, `RouteSource`, `RouteReasonCode`)
|
|
168
|
+
|
|
169
|
+
Subpaths:
|
|
170
|
+
|
|
171
|
+
- `@ghx-dev/core/agent` - agent tooling exports
|
|
172
|
+
- `@ghx-dev/core/cli` - CLI entrypoint
|
|
173
|
+
|
|
174
|
+
## Result Envelope
|
|
175
|
+
|
|
176
|
+
All execution paths resolve to:
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
type ResultEnvelope<TData = unknown> = {
|
|
180
|
+
ok: boolean
|
|
181
|
+
data?: TData
|
|
182
|
+
error?: {
|
|
183
|
+
code: string
|
|
184
|
+
message: string
|
|
185
|
+
retryable: boolean
|
|
186
|
+
details?: Record<string, unknown>
|
|
187
|
+
}
|
|
188
|
+
meta: {
|
|
189
|
+
capability_id: string
|
|
190
|
+
route_used?: "cli" | "graphql" | "rest"
|
|
191
|
+
reason?: string
|
|
192
|
+
attempts?: Array<{
|
|
193
|
+
route: "cli" | "graphql" | "rest"
|
|
194
|
+
status: "success" | "error" | "skipped"
|
|
195
|
+
error_code?: string
|
|
196
|
+
duration_ms?: number
|
|
197
|
+
}>
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Documentation
|
|
203
|
+
|
|
204
|
+
- Architecture overview: https://github.com/aryeko/ghx/blob/main/docs/CODEMAPS/ARCHITECTURE.md
|
|
205
|
+
- Module map: https://github.com/aryeko/ghx/blob/main/docs/CODEMAPS/MODULES.md
|
|
206
|
+
- File map: https://github.com/aryeko/ghx/blob/main/docs/CODEMAPS/FILES.md
|
|
207
|
+
- Adding capabilities: https://github.com/aryeko/ghx/blob/main/docs/guides/adding-a-capability.md
|
|
208
|
+
- Publishing guide: https://github.com/aryeko/ghx/blob/main/docs/guides/publishing.md
|
|
209
|
+
|
|
210
|
+
## License
|
|
211
|
+
|
|
212
|
+
MIT - https://github.com/aryeko/ghx/blob/main/LICENSE
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ResultEnvelope } from '../../core/contracts/envelope.js';
|
|
2
|
+
import '../../core/routing/reason-codes.js';
|
|
3
|
+
import '../../core/errors/codes.js';
|
|
4
|
+
|
|
5
|
+
type ExecuteTaskFn = (request: {
|
|
6
|
+
task: string;
|
|
7
|
+
input: Record<string, unknown>;
|
|
8
|
+
options?: Record<string, unknown>;
|
|
9
|
+
}) => Promise<ResultEnvelope>;
|
|
10
|
+
declare function createExecuteTool(deps: {
|
|
11
|
+
executeTask: ExecuteTaskFn;
|
|
12
|
+
}): {
|
|
13
|
+
execute(capabilityId: string, params: Record<string, unknown>, options?: Record<string, unknown>): Promise<ResultEnvelope>;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { createExecuteTool };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type CapabilityExplanation = {
|
|
2
|
+
capability_id: string;
|
|
3
|
+
purpose: string;
|
|
4
|
+
required_inputs: string[];
|
|
5
|
+
preferred_route: "cli" | "graphql" | "rest";
|
|
6
|
+
fallback_routes: Array<"cli" | "graphql" | "rest">;
|
|
7
|
+
output_fields: string[];
|
|
8
|
+
};
|
|
9
|
+
declare function explainCapability(capabilityId: string): CapabilityExplanation;
|
|
10
|
+
|
|
11
|
+
export { type CapabilityExplanation, explainCapability };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/agent.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { MAIN_SKILL_TEXT } from './agent-interface/prompt/main-skill.js';
|
|
2
|
+
export { explainCapability } from './agent-interface/tools/explain-tool.js';
|
|
3
|
+
export { createExecuteTool } from './agent-interface/tools/execute-tool.js';
|
|
4
|
+
export { listCapabilities } from './agent-interface/tools/list-capabilities-tool.js';
|
|
5
|
+
import './core/contracts/envelope.js';
|
|
6
|
+
import './core/routing/reason-codes.js';
|
|
7
|
+
import './core/errors/codes.js';
|
package/dist/agent.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createExecuteTool
|
|
3
|
+
} from "./chunk-DJIEG6K7.js";
|
|
4
|
+
import {
|
|
5
|
+
explainCapability
|
|
6
|
+
} from "./chunk-MMG6CIKK.js";
|
|
7
|
+
import {
|
|
8
|
+
listCapabilities
|
|
9
|
+
} from "./chunk-3RJCF42N.js";
|
|
10
|
+
import "./chunk-MT4U5DYD.js";
|
|
11
|
+
import "./chunk-2W4L5YCC.js";
|
|
12
|
+
import {
|
|
13
|
+
MAIN_SKILL_TEXT
|
|
14
|
+
} from "./chunk-FXN6IIT5.js";
|
|
15
|
+
export {
|
|
16
|
+
MAIN_SKILL_TEXT,
|
|
17
|
+
createExecuteTool,
|
|
18
|
+
explainCapability,
|
|
19
|
+
listCapabilities
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// src/core/registry/operation-card-schema.ts
|
|
2
|
+
var operationCardSchema = {
|
|
3
|
+
$id: "https://ghx.local/schemas/operation-card.json",
|
|
4
|
+
type: "object",
|
|
5
|
+
required: ["capability_id", "version", "description", "input_schema", "output_schema", "routing"],
|
|
6
|
+
properties: {
|
|
7
|
+
capability_id: { type: "string", minLength: 1 },
|
|
8
|
+
version: { type: "string", minLength: 1 },
|
|
9
|
+
description: { type: "string", minLength: 1 },
|
|
10
|
+
input_schema: { type: "object" },
|
|
11
|
+
output_schema: { type: "object" },
|
|
12
|
+
routing: {
|
|
13
|
+
type: "object",
|
|
14
|
+
required: ["preferred", "fallbacks"],
|
|
15
|
+
properties: {
|
|
16
|
+
preferred: { enum: ["cli", "graphql", "rest"] },
|
|
17
|
+
fallbacks: {
|
|
18
|
+
type: "array",
|
|
19
|
+
items: { enum: ["cli", "graphql", "rest"] }
|
|
20
|
+
},
|
|
21
|
+
suitability: {
|
|
22
|
+
type: "array",
|
|
23
|
+
items: {
|
|
24
|
+
type: "object",
|
|
25
|
+
required: ["when", "predicate", "reason"],
|
|
26
|
+
properties: {
|
|
27
|
+
when: { enum: ["always", "env", "params"] },
|
|
28
|
+
predicate: { type: "string", minLength: 1 },
|
|
29
|
+
reason: { type: "string", minLength: 1 }
|
|
30
|
+
},
|
|
31
|
+
additionalProperties: false
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
notes: {
|
|
35
|
+
type: "array",
|
|
36
|
+
items: { type: "string" }
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
additionalProperties: false
|
|
40
|
+
},
|
|
41
|
+
graphql: {
|
|
42
|
+
type: "object",
|
|
43
|
+
required: ["operationName", "documentPath"],
|
|
44
|
+
properties: {
|
|
45
|
+
operationName: { type: "string", minLength: 1 },
|
|
46
|
+
documentPath: { type: "string", minLength: 1 },
|
|
47
|
+
variables: { type: "object" },
|
|
48
|
+
limits: {
|
|
49
|
+
type: "object",
|
|
50
|
+
properties: {
|
|
51
|
+
maxPageSize: { type: "number" }
|
|
52
|
+
},
|
|
53
|
+
additionalProperties: false
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
additionalProperties: false
|
|
57
|
+
},
|
|
58
|
+
cli: {
|
|
59
|
+
type: "object",
|
|
60
|
+
required: ["command"],
|
|
61
|
+
properties: {
|
|
62
|
+
command: { type: "string", minLength: 1 },
|
|
63
|
+
jsonFields: {
|
|
64
|
+
type: "array",
|
|
65
|
+
items: { type: "string", minLength: 1 }
|
|
66
|
+
},
|
|
67
|
+
jq: { type: "string" },
|
|
68
|
+
limits: {
|
|
69
|
+
type: "object",
|
|
70
|
+
properties: {
|
|
71
|
+
maxItemsPerCall: { type: "number" }
|
|
72
|
+
},
|
|
73
|
+
additionalProperties: false
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
additionalProperties: false
|
|
77
|
+
},
|
|
78
|
+
rest: {
|
|
79
|
+
type: "object",
|
|
80
|
+
required: ["endpoints"],
|
|
81
|
+
properties: {
|
|
82
|
+
endpoints: {
|
|
83
|
+
type: "array",
|
|
84
|
+
items: {
|
|
85
|
+
type: "object",
|
|
86
|
+
required: ["method", "path"],
|
|
87
|
+
properties: {
|
|
88
|
+
method: { type: "string" },
|
|
89
|
+
path: { type: "string" }
|
|
90
|
+
},
|
|
91
|
+
additionalProperties: false
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
additionalProperties: false
|
|
96
|
+
},
|
|
97
|
+
examples: {
|
|
98
|
+
type: "array",
|
|
99
|
+
items: {
|
|
100
|
+
type: "object",
|
|
101
|
+
required: ["title", "input"],
|
|
102
|
+
properties: {
|
|
103
|
+
title: { type: "string" },
|
|
104
|
+
input: { type: "object" }
|
|
105
|
+
},
|
|
106
|
+
additionalProperties: false
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
additionalProperties: false
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export {
|
|
114
|
+
operationCardSchema
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=chunk-2W4L5YCC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/registry/operation-card-schema.ts"],"sourcesContent":["export const operationCardSchema = {\n $id: \"https://ghx.local/schemas/operation-card.json\",\n type: \"object\",\n required: [\"capability_id\", \"version\", \"description\", \"input_schema\", \"output_schema\", \"routing\"],\n properties: {\n capability_id: { type: \"string\", minLength: 1 },\n version: { type: \"string\", minLength: 1 },\n description: { type: \"string\", minLength: 1 },\n input_schema: { type: \"object\" },\n output_schema: { type: \"object\" },\n routing: {\n type: \"object\",\n required: [\"preferred\", \"fallbacks\"],\n properties: {\n preferred: { enum: [\"cli\", \"graphql\", \"rest\"] },\n fallbacks: {\n type: \"array\",\n items: { enum: [\"cli\", \"graphql\", \"rest\"] }\n },\n suitability: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"when\", \"predicate\", \"reason\"],\n properties: {\n when: { enum: [\"always\", \"env\", \"params\"] },\n predicate: { type: \"string\", minLength: 1 },\n reason: { type: \"string\", minLength: 1 }\n },\n additionalProperties: false\n }\n },\n notes: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n additionalProperties: false\n },\n graphql: {\n type: \"object\",\n required: [\"operationName\", \"documentPath\"],\n properties: {\n operationName: { type: \"string\", minLength: 1 },\n documentPath: { type: \"string\", minLength: 1 },\n variables: { type: \"object\" },\n limits: {\n type: \"object\",\n properties: {\n maxPageSize: { type: \"number\" }\n },\n additionalProperties: false\n }\n },\n additionalProperties: false\n },\n cli: {\n type: \"object\",\n required: [\"command\"],\n properties: {\n command: { type: \"string\", minLength: 1 },\n jsonFields: {\n type: \"array\",\n items: { type: \"string\", minLength: 1 }\n },\n jq: { type: \"string\" },\n limits: {\n type: \"object\",\n properties: {\n maxItemsPerCall: { type: \"number\" }\n },\n additionalProperties: false\n }\n },\n additionalProperties: false\n },\n rest: {\n type: \"object\",\n required: [\"endpoints\"],\n properties: {\n endpoints: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"method\", \"path\"],\n properties: {\n method: { type: \"string\" },\n path: { type: \"string\" }\n },\n additionalProperties: false\n }\n }\n },\n additionalProperties: false\n },\n examples: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"title\", \"input\"],\n properties: {\n title: { type: \"string\" },\n input: { type: \"object\" }\n },\n additionalProperties: false\n }\n }\n },\n additionalProperties: false\n} as const\n"],"mappings":"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","names":[]}
|