@beacon-build/sdk 2.4.3 → 2.5.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/CHANGELOG.md +23 -0
- package/dist/auth/argus-jwt.d.ts +30 -0
- package/dist/auth/argus-jwt.d.ts.map +1 -0
- package/dist/auth/argus-jwt.js +41 -0
- package/dist/auth/argus-jwt.js.map +1 -0
- package/dist/auth/rotating-jwt-provider.d.ts +12 -1
- package/dist/auth/rotating-jwt-provider.d.ts.map +1 -1
- package/dist/auth/rotating-jwt-provider.js +9 -3
- package/dist/auth/rotating-jwt-provider.js.map +1 -1
- package/dist/cli/backlog.d.ts +14 -0
- package/dist/cli/backlog.d.ts.map +1 -0
- package/dist/cli/backlog.js +228 -0
- package/dist/cli/backlog.js.map +1 -0
- package/dist/cli/claude-md-check.d.ts +18 -0
- package/dist/cli/claude-md-check.d.ts.map +1 -0
- package/dist/cli/claude-md-check.js +57 -0
- package/dist/cli/claude-md-check.js.map +1 -0
- package/dist/cli/context.d.ts +14 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +465 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/help.d.ts +17 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +71 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +22 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +212 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/project-log.d.ts +16 -0
- package/dist/cli/project-log.d.ts.map +1 -0
- package/dist/cli/project-log.js +185 -0
- package/dist/cli/project-log.js.map +1 -0
- package/dist/cli/setup-worktree.d.ts +23 -0
- package/dist/cli/setup-worktree.d.ts.map +1 -0
- package/dist/cli/setup-worktree.js +396 -0
- package/dist/cli/setup-worktree.js.map +1 -0
- package/dist/cli/update-client.d.ts +14 -0
- package/dist/cli/update-client.d.ts.map +1 -0
- package/dist/cli/update-client.js +629 -0
- package/dist/cli/update-client.js.map +1 -0
- package/dist/cli/workflow-sync.d.ts +19 -0
- package/dist/cli/workflow-sync.d.ts.map +1 -0
- package/dist/cli/workflow-sync.js +133 -0
- package/dist/cli/workflow-sync.js.map +1 -0
- package/dist/clients/admin/access-grants.client.d.ts +59 -0
- package/dist/clients/admin/access-grants.client.d.ts.map +1 -0
- package/dist/clients/admin/access-grants.client.js +21 -0
- package/dist/clients/admin/access-grants.client.js.map +1 -0
- package/dist/clients/admin/activity.client.d.ts +33 -0
- package/dist/clients/admin/activity.client.d.ts.map +1 -0
- package/dist/clients/admin/activity.client.js +28 -0
- package/dist/clients/admin/activity.client.js.map +1 -0
- package/dist/clients/admin/agents.client.d.ts +66 -0
- package/dist/clients/admin/agents.client.d.ts.map +1 -0
- package/dist/clients/admin/agents.client.js +150 -0
- package/dist/clients/admin/agents.client.js.map +1 -0
- package/dist/clients/admin/alerts.client.d.ts +8 -0
- package/dist/clients/admin/alerts.client.d.ts.map +1 -0
- package/dist/clients/admin/alerts.client.js +11 -0
- package/dist/clients/admin/alerts.client.js.map +1 -0
- package/dist/clients/admin/assets.client.d.ts +24 -0
- package/dist/clients/admin/assets.client.d.ts.map +1 -0
- package/dist/clients/admin/assets.client.js +34 -0
- package/dist/clients/admin/assets.client.js.map +1 -0
- package/dist/clients/admin/board-messages.client.d.ts +13 -0
- package/dist/clients/admin/board-messages.client.d.ts.map +1 -0
- package/dist/clients/admin/board-messages.client.js +16 -0
- package/dist/clients/admin/board-messages.client.js.map +1 -0
- package/dist/clients/admin/conversation-messages.client.d.ts +34 -0
- package/dist/clients/admin/conversation-messages.client.d.ts.map +1 -0
- package/dist/clients/admin/conversation-messages.client.js +61 -0
- package/dist/clients/admin/conversation-messages.client.js.map +1 -0
- package/dist/clients/admin/daemon-admin.client.d.ts +100 -0
- package/dist/clients/admin/daemon-admin.client.d.ts.map +1 -0
- package/dist/clients/admin/daemon-admin.client.js +37 -0
- package/dist/clients/admin/daemon-admin.client.js.map +1 -0
- package/dist/clients/admin/db.client.d.ts +12 -0
- package/dist/clients/admin/db.client.d.ts.map +1 -0
- package/dist/clients/admin/db.client.js +13 -0
- package/dist/clients/admin/db.client.js.map +1 -0
- package/dist/clients/admin/documents.client.d.ts +75 -0
- package/dist/clients/admin/documents.client.d.ts.map +1 -0
- package/dist/clients/admin/documents.client.js +123 -0
- package/dist/clients/admin/documents.client.js.map +1 -0
- package/dist/clients/admin/executions.client.d.ts +68 -0
- package/dist/clients/admin/executions.client.d.ts.map +1 -0
- package/dist/clients/admin/executions.client.js +67 -0
- package/dist/clients/admin/executions.client.js.map +1 -0
- package/dist/clients/admin/github-proxy.client.d.ts +51 -0
- package/dist/clients/admin/github-proxy.client.d.ts.map +1 -0
- package/dist/clients/admin/github-proxy.client.js +55 -0
- package/dist/clients/admin/github-proxy.client.js.map +1 -0
- package/dist/clients/admin/memories.client.d.ts +69 -0
- package/dist/clients/admin/memories.client.d.ts.map +1 -0
- package/dist/clients/admin/memories.client.js +126 -0
- package/dist/clients/admin/memories.client.js.map +1 -0
- package/dist/clients/admin/metrics.client.d.ts +80 -0
- package/dist/clients/admin/metrics.client.d.ts.map +1 -0
- package/dist/clients/admin/metrics.client.js +71 -0
- package/dist/clients/admin/metrics.client.js.map +1 -0
- package/dist/clients/admin/model-health-check.client.d.ts +33 -0
- package/dist/clients/admin/model-health-check.client.d.ts.map +1 -0
- package/dist/clients/admin/model-health-check.client.js +23 -0
- package/dist/clients/admin/model-health-check.client.js.map +1 -0
- package/dist/clients/admin/ops-admin.client.d.ts +206 -0
- package/dist/clients/admin/ops-admin.client.d.ts.map +1 -0
- package/dist/clients/admin/ops-admin.client.js +47 -0
- package/dist/clients/admin/ops-admin.client.js.map +1 -0
- package/dist/clients/admin/organizations.client.d.ts +74 -0
- package/dist/clients/admin/organizations.client.d.ts.map +1 -0
- package/dist/clients/admin/organizations.client.js +74 -0
- package/dist/clients/admin/organizations.client.js.map +1 -0
- package/dist/clients/admin/planning.client.d.ts +17 -0
- package/dist/clients/admin/planning.client.d.ts.map +1 -0
- package/dist/clients/admin/planning.client.js +58 -0
- package/dist/clients/admin/planning.client.js.map +1 -0
- package/dist/clients/admin/portal.client.d.ts +104 -0
- package/dist/clients/admin/portal.client.d.ts.map +1 -0
- package/dist/clients/admin/portal.client.js +122 -0
- package/dist/clients/admin/portal.client.js.map +1 -0
- package/dist/clients/admin/projects.client.d.ts +190 -0
- package/dist/clients/admin/projects.client.d.ts.map +1 -0
- package/dist/clients/admin/projects.client.js +122 -0
- package/dist/clients/admin/projects.client.js.map +1 -0
- package/dist/clients/admin/roster.client.d.ts +27 -0
- package/dist/clients/admin/roster.client.d.ts.map +1 -0
- package/dist/clients/admin/roster.client.js +30 -0
- package/dist/clients/admin/roster.client.js.map +1 -0
- package/dist/clients/admin/sessions.client.d.ts +70 -0
- package/dist/clients/admin/sessions.client.d.ts.map +1 -0
- package/dist/clients/admin/sessions.client.js +116 -0
- package/dist/clients/admin/sessions.client.js.map +1 -0
- package/dist/clients/admin/settings.client.d.ts +98 -0
- package/dist/clients/admin/settings.client.d.ts.map +1 -0
- package/dist/clients/admin/settings.client.js +72 -0
- package/dist/clients/admin/settings.client.js.map +1 -0
- package/dist/clients/admin/task-events.types.d.ts +73 -0
- package/dist/clients/admin/task-events.types.d.ts.map +1 -0
- package/dist/clients/admin/task-events.types.js +6 -0
- package/dist/clients/admin/task-events.types.js.map +1 -0
- package/dist/clients/admin/tasks-attachments.client.d.ts +31 -0
- package/dist/clients/admin/tasks-attachments.client.d.ts.map +1 -0
- package/dist/clients/admin/tasks-attachments.client.js +29 -0
- package/dist/clients/admin/tasks-attachments.client.js.map +1 -0
- package/dist/clients/admin/tasks-doc-links.client.d.ts +15 -0
- package/dist/clients/admin/tasks-doc-links.client.d.ts.map +1 -0
- package/dist/clients/admin/tasks-doc-links.client.js +10 -0
- package/dist/clients/admin/tasks-doc-links.client.js.map +1 -0
- package/dist/clients/admin/tasks-links.client.d.ts +13 -0
- package/dist/clients/admin/tasks-links.client.d.ts.map +1 -0
- package/dist/clients/admin/tasks-links.client.js +10 -0
- package/dist/clients/admin/tasks-links.client.js.map +1 -0
- package/dist/clients/admin/tasks-list-params.d.ts +7 -0
- package/dist/clients/admin/tasks-list-params.d.ts.map +1 -0
- package/dist/clients/admin/tasks-list-params.js +48 -0
- package/dist/clients/admin/tasks-list-params.js.map +1 -0
- package/dist/clients/admin/tasks-pr.client.d.ts +17 -0
- package/dist/clients/admin/tasks-pr.client.d.ts.map +1 -0
- package/dist/clients/admin/tasks-pr.client.js +11 -0
- package/dist/clients/admin/tasks-pr.client.js.map +1 -0
- package/dist/clients/admin/tasks-ref.client.d.ts +16 -0
- package/dist/clients/admin/tasks-ref.client.d.ts.map +1 -0
- package/dist/clients/admin/tasks-ref.client.js +22 -0
- package/dist/clients/admin/tasks-ref.client.js.map +1 -0
- package/dist/clients/admin/tasks.client.d.ts +87 -0
- package/dist/clients/admin/tasks.client.d.ts.map +1 -0
- package/dist/clients/admin/tasks.client.js +183 -0
- package/dist/clients/admin/tasks.client.js.map +1 -0
- package/dist/clients/admin/tasks.types.d.ts +147 -0
- package/dist/clients/admin/tasks.types.d.ts.map +1 -0
- package/dist/clients/admin/tasks.types.js +2 -0
- package/dist/clients/admin/tasks.types.js.map +1 -0
- package/dist/clients/admin/tool-calls.client.d.ts +12 -0
- package/dist/clients/admin/tool-calls.client.d.ts.map +1 -0
- package/dist/clients/admin/tool-calls.client.js +29 -0
- package/dist/clients/admin/tool-calls.client.js.map +1 -0
- package/dist/clients/admin/usage.client.d.ts +138 -0
- package/dist/clients/admin/usage.client.d.ts.map +1 -0
- package/dist/clients/admin/usage.client.js +96 -0
- package/dist/clients/admin/usage.client.js.map +1 -0
- package/dist/clients/admin/users.client.d.ts +137 -0
- package/dist/clients/admin/users.client.d.ts.map +1 -0
- package/dist/clients/admin/users.client.js +133 -0
- package/dist/clients/admin/users.client.js.map +1 -0
- package/dist/clients/agent/messaging.client.d.ts +34 -0
- package/dist/clients/agent/messaging.client.d.ts.map +1 -0
- package/dist/clients/agent/messaging.client.js +40 -0
- package/dist/clients/agent/messaging.client.js.map +1 -0
- package/dist/clients/capture.client.d.ts +8 -1
- package/dist/clients/capture.client.d.ts.map +1 -1
- package/dist/clients/capture.client.js.map +1 -1
- package/dist/clients/external-session-registrar.d.ts +16 -0
- package/dist/clients/external-session-registrar.d.ts.map +1 -0
- package/dist/clients/external-session-registrar.js +29 -0
- package/dist/clients/external-session-registrar.js.map +1 -0
- package/dist/clients/ops/agent-authorization-ops.client.d.ts +29 -0
- package/dist/clients/ops/agent-authorization-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/agent-authorization-ops.client.js +34 -0
- package/dist/clients/ops/agent-authorization-ops.client.js.map +1 -0
- package/dist/clients/ops/agents-affinity-ops.client.d.ts +27 -0
- package/dist/clients/ops/agents-affinity-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/agents-affinity-ops.client.js +14 -0
- package/dist/clients/ops/agents-affinity-ops.client.js.map +1 -0
- package/dist/clients/ops/agents-mint-ops.client.d.ts +34 -0
- package/dist/clients/ops/agents-mint-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/agents-mint-ops.client.js +55 -0
- package/dist/clients/ops/agents-mint-ops.client.js.map +1 -0
- package/dist/clients/ops/agents-ops.client.d.ts +120 -0
- package/dist/clients/ops/agents-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/agents-ops.client.js +217 -0
- package/dist/clients/ops/agents-ops.client.js.map +1 -0
- package/dist/clients/ops/agents-stats-ops.client.d.ts +19 -0
- package/dist/clients/ops/agents-stats-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/agents-stats-ops.client.js +10 -0
- package/dist/clients/ops/agents-stats-ops.client.js.map +1 -0
- package/dist/clients/ops/board-messages-ops.client.d.ts +14 -0
- package/dist/clients/ops/board-messages-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/board-messages-ops.client.js +26 -0
- package/dist/clients/ops/board-messages-ops.client.js.map +1 -0
- package/dist/clients/ops/campaign-events-ops.client.d.ts +38 -0
- package/dist/clients/ops/campaign-events-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/campaign-events-ops.client.js +28 -0
- package/dist/clients/ops/campaign-events-ops.client.js.map +1 -0
- package/dist/clients/ops/conversation-messages-ops.client.d.ts +10 -0
- package/dist/clients/ops/conversation-messages-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/conversation-messages-ops.client.js +20 -0
- package/dist/clients/ops/conversation-messages-ops.client.js.map +1 -0
- package/dist/clients/ops/document-sync.client.d.ts +50 -0
- package/dist/clients/ops/document-sync.client.d.ts.map +1 -0
- package/dist/clients/ops/document-sync.client.js +108 -0
- package/dist/clients/ops/document-sync.client.js.map +1 -0
- package/dist/clients/ops/documents-ops.client.d.ts +20 -0
- package/dist/clients/ops/documents-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/documents-ops.client.js +31 -0
- package/dist/clients/ops/documents-ops.client.js.map +1 -0
- package/dist/clients/ops/github-credential-ops.client.d.ts +29 -0
- package/dist/clients/ops/github-credential-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/github-credential-ops.client.js +32 -0
- package/dist/clients/ops/github-credential-ops.client.js.map +1 -0
- package/dist/clients/ops/leads-ops.client.d.ts +36 -0
- package/dist/clients/ops/leads-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/leads-ops.client.js +35 -0
- package/dist/clients/ops/leads-ops.client.js.map +1 -0
- package/dist/clients/ops/memories-ops.client.d.ts +25 -0
- package/dist/clients/ops/memories-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/memories-ops.client.js +75 -0
- package/dist/clients/ops/memories-ops.client.js.map +1 -0
- package/dist/clients/ops/metrics-ops.client.d.ts +38 -0
- package/dist/clients/ops/metrics-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/metrics-ops.client.js +23 -0
- package/dist/clients/ops/metrics-ops.client.js.map +1 -0
- package/dist/clients/ops/ops-db.client.d.ts +49 -0
- package/dist/clients/ops/ops-db.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-db.client.js +62 -0
- package/dist/clients/ops/ops-db.client.js.map +1 -0
- package/dist/clients/ops/ops-logs.client.d.ts +63 -0
- package/dist/clients/ops/ops-logs.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-logs.client.js +68 -0
- package/dist/clients/ops/ops-logs.client.js.map +1 -0
- package/dist/clients/ops/ops-mq.client.d.ts +33 -0
- package/dist/clients/ops/ops-mq.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-mq.client.js +18 -0
- package/dist/clients/ops/ops-mq.client.js.map +1 -0
- package/dist/clients/ops/ops-northflank.client.d.ts +48 -0
- package/dist/clients/ops/ops-northflank.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-northflank.client.js +55 -0
- package/dist/clients/ops/ops-northflank.client.js.map +1 -0
- package/dist/clients/ops/ops-storage.client.d.ts +34 -0
- package/dist/clients/ops/ops-storage.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-storage.client.js +39 -0
- package/dist/clients/ops/ops-storage.client.js.map +1 -0
- package/dist/clients/ops/ops-workers.client.d.ts +63 -0
- package/dist/clients/ops/ops-workers.client.d.ts.map +1 -0
- package/dist/clients/ops/ops-workers.client.js +109 -0
- package/dist/clients/ops/ops-workers.client.js.map +1 -0
- package/dist/clients/ops/ops-workers.types.d.ts +179 -0
- package/dist/clients/ops/ops-workers.types.d.ts.map +1 -0
- package/dist/clients/ops/ops-workers.types.js +2 -0
- package/dist/clients/ops/ops-workers.types.js.map +1 -0
- package/dist/clients/ops/projects-ops.client.d.ts +20 -0
- package/dist/clients/ops/projects-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/projects-ops.client.js +18 -0
- package/dist/clients/ops/projects-ops.client.js.map +1 -0
- package/dist/clients/ops/realtime-ops.client.d.ts +14 -0
- package/dist/clients/ops/realtime-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/realtime-ops.client.js +10 -0
- package/dist/clients/ops/realtime-ops.client.js.map +1 -0
- package/dist/clients/ops/sessions-ops.client.d.ts +60 -0
- package/dist/clients/ops/sessions-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/sessions-ops.client.js +139 -0
- package/dist/clients/ops/sessions-ops.client.js.map +1 -0
- package/dist/clients/ops/tasks-ops.client.d.ts +20 -0
- package/dist/clients/ops/tasks-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/tasks-ops.client.js +39 -0
- package/dist/clients/ops/tasks-ops.client.js.map +1 -0
- package/dist/clients/ops/thread-messaging.client.d.ts +93 -0
- package/dist/clients/ops/thread-messaging.client.d.ts.map +1 -0
- package/dist/clients/ops/thread-messaging.client.js +153 -0
- package/dist/clients/ops/thread-messaging.client.js.map +1 -0
- package/dist/clients/ops/thread-messaging.inbox-read.d.ts +50 -0
- package/dist/clients/ops/thread-messaging.inbox-read.d.ts.map +1 -0
- package/dist/clients/ops/thread-messaging.inbox-read.js +70 -0
- package/dist/clients/ops/thread-messaging.inbox-read.js.map +1 -0
- package/dist/clients/ops/thread-messaging.lifecycle.d.ts +29 -0
- package/dist/clients/ops/thread-messaging.lifecycle.d.ts.map +1 -0
- package/dist/clients/ops/thread-messaging.lifecycle.js +50 -0
- package/dist/clients/ops/thread-messaging.lifecycle.js.map +1 -0
- package/dist/clients/ops/thread-messaging.owner-scope.d.ts +54 -0
- package/dist/clients/ops/thread-messaging.owner-scope.d.ts.map +1 -0
- package/dist/clients/ops/thread-messaging.owner-scope.js +33 -0
- package/dist/clients/ops/thread-messaging.owner-scope.js.map +1 -0
- package/dist/clients/ops/thread-messaging.transport.d.ts +20 -0
- package/dist/clients/ops/thread-messaging.transport.d.ts.map +1 -0
- package/dist/clients/ops/thread-messaging.transport.js +42 -0
- package/dist/clients/ops/thread-messaging.transport.js.map +1 -0
- package/dist/clients/ops/thread-messaging.types.d.ts +60 -0
- package/dist/clients/ops/thread-messaging.types.d.ts.map +1 -0
- package/dist/clients/ops/thread-messaging.types.js +2 -0
- package/dist/clients/ops/thread-messaging.types.js.map +1 -0
- package/dist/clients/ops/tool-calls-ops.client.d.ts +12 -0
- package/dist/clients/ops/tool-calls-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/tool-calls-ops.client.js +29 -0
- package/dist/clients/ops/tool-calls-ops.client.js.map +1 -0
- package/dist/clients/ops/usage-workflows-ops.client.d.ts +22 -0
- package/dist/clients/ops/usage-workflows-ops.client.d.ts.map +1 -0
- package/dist/clients/ops/usage-workflows-ops.client.js +23 -0
- package/dist/clients/ops/usage-workflows-ops.client.js.map +1 -0
- package/dist/factory/admin-sdk.d.ts +96 -0
- package/dist/factory/admin-sdk.d.ts.map +1 -0
- package/dist/factory/admin-sdk.js +112 -0
- package/dist/factory/admin-sdk.js.map +1 -0
- package/dist/factory/ops-sdk.d.ts +74 -0
- package/dist/factory/ops-sdk.d.ts.map +1 -0
- package/dist/factory/ops-sdk.js +88 -0
- package/dist/factory/ops-sdk.js.map +1 -0
- package/dist/index.additional-client-types.d.ts +24 -0
- package/dist/index.additional-client-types.d.ts.map +1 -0
- package/dist/index.additional-client-types.js +16 -0
- package/dist/index.additional-client-types.js.map +1 -0
- package/dist/legacy/sdk-factory.d.ts +37 -0
- package/dist/legacy/sdk-factory.d.ts.map +1 -0
- package/dist/legacy/sdk-factory.js +36 -0
- package/dist/legacy/sdk-factory.js.map +1 -0
- package/dist/lib/context.d.ts +69 -0
- package/dist/lib/context.d.ts.map +1 -0
- package/dist/lib/context.js +225 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/db.d.ts +16 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +50 -0
- package/dist/lib/db.js.map +1 -0
- package/dist/lib/logger.d.ts +14 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +14 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/opencode.d.ts +33 -0
- package/dist/lib/opencode.d.ts.map +1 -0
- package/dist/lib/opencode.js +101 -0
- package/dist/lib/opencode.js.map +1 -0
- package/dist/lib/utils.d.ts +18 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +40 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/manifest.admin-entries-2.d.ts +9 -0
- package/dist/manifest.admin-entries-2.d.ts.map +1 -0
- package/dist/manifest.admin-entries-2.js +218 -0
- package/dist/manifest.admin-entries-2.js.map +1 -0
- package/dist/manifest.admin-entries.d.ts +10 -0
- package/dist/manifest.admin-entries.d.ts.map +1 -0
- package/dist/manifest.admin-entries.js +220 -0
- package/dist/manifest.admin-entries.js.map +1 -0
- package/dist/manifest.negative-list.d.ts.map +1 -1
- package/dist/manifest.negative-list.js +21 -0
- package/dist/manifest.negative-list.js.map +1 -1
- package/dist/manifest.ops-entries.d.ts +8 -0
- package/dist/manifest.ops-entries.d.ts.map +1 -0
- package/dist/manifest.ops-entries.js +282 -0
- package/dist/manifest.ops-entries.js.map +1 -0
- package/dist/transport/ops-api-client.d.ts +80 -0
- package/dist/transport/ops-api-client.d.ts.map +1 -0
- package/dist/transport/ops-api-client.js +211 -0
- package/dist/transport/ops-api-client.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { HttpClient } from '../../transport/http-client.js';
|
|
2
|
+
/** F381: query params for the skill-execution list read (mirrors `listSkillExecutionsQuerySchema`). */
|
|
3
|
+
export interface ListSkillExecutionsParams {
|
|
4
|
+
project?: string;
|
|
5
|
+
status?: 'running' | 'completed' | 'failed';
|
|
6
|
+
integrationStatus?: 'pending' | 'merged' | 'discarded';
|
|
7
|
+
topLevelOnly?: boolean;
|
|
8
|
+
/** C856: scope to one task's own executions (the route already accepts this — see
|
|
9
|
+
* `listSkillExecutionsQuerySchema`) — the task-detail Metrics & Cost tab's Executions list. */
|
|
10
|
+
taskId?: string;
|
|
11
|
+
/** C909: scope to one agent's own executions (the route already accepts this — see
|
|
12
|
+
* `listSkillExecutionsQuerySchema`) — the Agent-Detail Activity tab's live-executions block. */
|
|
13
|
+
agentId?: string;
|
|
14
|
+
limit?: number;
|
|
15
|
+
}
|
|
16
|
+
/** F381/AC-4: query params for the instance list read. */
|
|
17
|
+
export interface ListInstancesParams {
|
|
18
|
+
project?: string;
|
|
19
|
+
/** Multi-valued (IN filter) — joined into the CSV `statuses` query param. */
|
|
20
|
+
statuses?: string[];
|
|
21
|
+
/** C856: scope to one task's own instances (the route already accepts this — see
|
|
22
|
+
* `listInstancesQuerySchema`) — the task-detail Metrics & Cost tab's Executions list. */
|
|
23
|
+
taskId?: string;
|
|
24
|
+
/** C909: scope to one agent's own instances (the route already accepts this — see
|
|
25
|
+
* `listInstancesQuerySchema`) — the Agent-Detail Activity tab's live-executions block. */
|
|
26
|
+
agentId?: string;
|
|
27
|
+
limit?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* AdminExecutionsClient — by-id drill-down reads for the F307 Execution Log UI, plus the F381
|
|
31
|
+
* Läufe view's cross-cutting list reads. Wraps existing routes (F381 adds no server endpoint
|
|
32
|
+
* except the AC-4 `statuses` filter on the pre-existing `/workflow-instances/instances`):
|
|
33
|
+
* - F308 `GET /workflow-instances/workflow-executions/:id` → `{ data: ExecutionDetail }`
|
|
34
|
+
* - `GET /skill-executions/:id` → `{ data: SkillExecution }` (mapped to ExecutionDetail by the
|
|
35
|
+
* consumer). Renamed from `/skills/:id` under FS54 Chore 6 (C567).
|
|
36
|
+
* - F381 `GET /skill-executions` → `{ data: SkillExecution[], total }` (renamed from `/skills`).
|
|
37
|
+
* - F381 `GET /workflow-instances/instances` → `{ data: WorkflowInstance[] }`
|
|
38
|
+
* - F381 `GET /workflow-instances/definitions/:id` → `{ data: WorkflowDefinition }` (name/type
|
|
39
|
+
* resolution for an instance row; existing route, not new).
|
|
40
|
+
*
|
|
41
|
+
* C568 (FS54/7): paths renamed from `/workflow-runner/*` to `/workflow-instances/*` — the
|
|
42
|
+
* consolidated canonical resource; no shape/contract change.
|
|
43
|
+
*/
|
|
44
|
+
export declare class AdminExecutionsClient {
|
|
45
|
+
private readonly http;
|
|
46
|
+
constructor(http: HttpClient);
|
|
47
|
+
/** F308: unified ExecutionDetail for a SOP/workflow run by instance id. */
|
|
48
|
+
workflowDetail<T>(id: string): Promise<T>;
|
|
49
|
+
/** Raw skill execution by id; the platform service maps it to ExecutionDetail. */
|
|
50
|
+
skillExecution<T>(id: string): Promise<T>;
|
|
51
|
+
/** C352/AC-4: flattened friction occurrences for a project, grouped by repetition client-side. */
|
|
52
|
+
projectFrictions<T>(project: string): Promise<T>;
|
|
53
|
+
/** F381: raw skill-execution list (Live/Roster/Recent sections read this directly). */
|
|
54
|
+
listSkillExecutions<T>(params: ListSkillExecutionsParams): Promise<T>;
|
|
55
|
+
/** F381/AC-4: raw workflow-instance list, `statuses` joined into one CSV param. */
|
|
56
|
+
listInstances<T>(params: ListInstancesParams): Promise<T>;
|
|
57
|
+
/** F381: resolve a workflow instance's definition (name + type) for card display. */
|
|
58
|
+
getDefinition<T>(id: string): Promise<T>;
|
|
59
|
+
/**
|
|
60
|
+
* F424: vendor-gated force-terminate for a skill execution — distinct from the
|
|
61
|
+
* self-service `POST /skill-executions/:id/fail`. 403s for a non-vendor caller. Idempotent —
|
|
62
|
+
* safe to call again on an already-terminal execution. Renamed from
|
|
63
|
+
* `/admin/executions/:id/terminate` under FS54 Chore 6 (C567) — now a sub-path of the
|
|
64
|
+
* canonical resource.
|
|
65
|
+
*/
|
|
66
|
+
terminate<T>(id: string): Promise<T>;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=executions.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executions.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/executions.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,uGAAuG;AACvG,MAAM,WAAW,yBAAyB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;IAC3C,iBAAiB,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;IACtD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;oGACgG;IAChG,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;qGACiG;IACjG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB;8FAC0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;+FAC2F;IAC3F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAYD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,qBAAqB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,2EAA2E;IACrE,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAM/C,kFAAkF;IAC5E,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAI/C,kGAAkG;IAC5F,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAMtD,uFAAuF;IACjF,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI3E,mFAAmF;IAC7E,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAO/D,qFAAqF;IAC/E,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9C;;;;;;OAMG;IACG,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAG7C"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
function qs(params) {
|
|
2
|
+
const p = new URLSearchParams();
|
|
3
|
+
for (const [k, v] of Object.entries(params)) {
|
|
4
|
+
if (v === undefined)
|
|
5
|
+
continue;
|
|
6
|
+
p.set(k, String(v));
|
|
7
|
+
}
|
|
8
|
+
const s = p.toString();
|
|
9
|
+
return s ? `?${s}` : '';
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* AdminExecutionsClient — by-id drill-down reads for the F307 Execution Log UI, plus the F381
|
|
13
|
+
* Läufe view's cross-cutting list reads. Wraps existing routes (F381 adds no server endpoint
|
|
14
|
+
* except the AC-4 `statuses` filter on the pre-existing `/workflow-instances/instances`):
|
|
15
|
+
* - F308 `GET /workflow-instances/workflow-executions/:id` → `{ data: ExecutionDetail }`
|
|
16
|
+
* - `GET /skill-executions/:id` → `{ data: SkillExecution }` (mapped to ExecutionDetail by the
|
|
17
|
+
* consumer). Renamed from `/skills/:id` under FS54 Chore 6 (C567).
|
|
18
|
+
* - F381 `GET /skill-executions` → `{ data: SkillExecution[], total }` (renamed from `/skills`).
|
|
19
|
+
* - F381 `GET /workflow-instances/instances` → `{ data: WorkflowInstance[] }`
|
|
20
|
+
* - F381 `GET /workflow-instances/definitions/:id` → `{ data: WorkflowDefinition }` (name/type
|
|
21
|
+
* resolution for an instance row; existing route, not new).
|
|
22
|
+
*
|
|
23
|
+
* C568 (FS54/7): paths renamed from `/workflow-runner/*` to `/workflow-instances/*` — the
|
|
24
|
+
* consolidated canonical resource; no shape/contract change.
|
|
25
|
+
*/
|
|
26
|
+
export class AdminExecutionsClient {
|
|
27
|
+
http;
|
|
28
|
+
constructor(http) {
|
|
29
|
+
this.http = http;
|
|
30
|
+
}
|
|
31
|
+
/** F308: unified ExecutionDetail for a SOP/workflow run by instance id. */
|
|
32
|
+
async workflowDetail(id) {
|
|
33
|
+
return this.http.getEnvelope(`/workflow-instances/workflow-executions/${encodeURIComponent(id)}`);
|
|
34
|
+
}
|
|
35
|
+
/** Raw skill execution by id; the platform service maps it to ExecutionDetail. */
|
|
36
|
+
async skillExecution(id) {
|
|
37
|
+
return this.http.getEnvelope(`/skill-executions/${encodeURIComponent(id)}`);
|
|
38
|
+
}
|
|
39
|
+
/** C352/AC-4: flattened friction occurrences for a project, grouped by repetition client-side. */
|
|
40
|
+
async projectFrictions(project) {
|
|
41
|
+
return this.http.getEnvelope(`/skill-executions/frictions?project=${encodeURIComponent(project)}`);
|
|
42
|
+
}
|
|
43
|
+
/** F381: raw skill-execution list (Live/Roster/Recent sections read this directly). */
|
|
44
|
+
async listSkillExecutions(params) {
|
|
45
|
+
return this.http.getEnvelope(`/skill-executions${qs({ ...params })}`);
|
|
46
|
+
}
|
|
47
|
+
/** F381/AC-4: raw workflow-instance list, `statuses` joined into one CSV param. */
|
|
48
|
+
async listInstances(params) {
|
|
49
|
+
const { statuses, ...rest } = params;
|
|
50
|
+
return this.http.getEnvelope(`/workflow-instances/instances${qs({ ...rest, statuses: statuses?.join(',') })}`);
|
|
51
|
+
}
|
|
52
|
+
/** F381: resolve a workflow instance's definition (name + type) for card display. */
|
|
53
|
+
async getDefinition(id) {
|
|
54
|
+
return this.http.getEnvelope(`/workflow-instances/definitions/${encodeURIComponent(id)}`);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* F424: vendor-gated force-terminate for a skill execution — distinct from the
|
|
58
|
+
* self-service `POST /skill-executions/:id/fail`. 403s for a non-vendor caller. Idempotent —
|
|
59
|
+
* safe to call again on an already-terminal execution. Renamed from
|
|
60
|
+
* `/admin/executions/:id/terminate` under FS54 Chore 6 (C567) — now a sub-path of the
|
|
61
|
+
* canonical resource.
|
|
62
|
+
*/
|
|
63
|
+
async terminate(id) {
|
|
64
|
+
return this.http.post(`/skill-executions/${encodeURIComponent(id)}/terminate`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=executions.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executions.client.js","sourceRoot":"","sources":["../../../src/clients/admin/executions.client.ts"],"names":[],"mappings":"AA+BA,SAAS,EAAE,CAAC,MAA6D;IACrE,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAA;IAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,SAAS;YAAE,SAAQ;QAC7B,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;IACtB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAC3B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,qBAAqB;IACD;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,2EAA2E;IAC3E,KAAK,CAAC,cAAc,CAAI,EAAU;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,2CAA2C,kBAAkB,CAAC,EAAE,CAAC,EAAE,CACtE,CAAA;IACL,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,cAAc,CAAI,EAAU;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAI,qBAAqB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAClF,CAAC;IAED,kGAAkG;IAClG,KAAK,CAAC,gBAAgB,CAAI,OAAe;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,uCAAuC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CACvE,CAAA;IACL,CAAC;IAED,uFAAuF;IACvF,KAAK,CAAC,mBAAmB,CAAI,MAAiC;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAI,oBAAoB,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,aAAa,CAAI,MAA2B;QAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,gCAAgC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CACnF,CAAA;IACL,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,aAAa,CAAI,EAAU;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAI,mCAAmC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAChG,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CAAI,EAAU;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,qBAAqB,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;IACrF,CAAC;CACJ"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { HttpClient } from '../../transport/http-client.js';
|
|
2
|
+
export interface GithubProxyResponse {
|
|
3
|
+
data: unknown;
|
|
4
|
+
status: number;
|
|
5
|
+
headers: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* C935 AC-3: one GitHub Release, as surfaced by `releases()` below — the same shape the
|
|
9
|
+
* Portal's `GitHubServiceImpl.getReleases` maps to (Release, in
|
|
10
|
+
* apps/platform/src/services/GitHubService.ts), so a caller that already knows that shape
|
|
11
|
+
* (e.g. beacon-web/F39) gets an identical contract from the SDK.
|
|
12
|
+
*/
|
|
13
|
+
export interface SdkRelease {
|
|
14
|
+
tag: string;
|
|
15
|
+
name: string;
|
|
16
|
+
timestamp: string;
|
|
17
|
+
url: string;
|
|
18
|
+
body?: string;
|
|
19
|
+
author?: string;
|
|
20
|
+
prerelease: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* B499: `method` is narrowed to the read verbs the API actually forwards. The server
|
|
24
|
+
* refuses anything else with 403 METHOD_NOT_ALLOWED (`services/api/src/routes/github.ts`),
|
|
25
|
+
* because every proxied call travels under the server's GitHub PAT — a write verb here is
|
|
26
|
+
* an arbitrary write against any repository that token can reach. The wider
|
|
27
|
+
* `POST | PATCH | PUT | DELETE` union this type used to advertise had no caller: the
|
|
28
|
+
* portal's `GitHubServiceImpl` is the sole consumer and only ever issues `GET`.
|
|
29
|
+
*/
|
|
30
|
+
export type GithubProxyMethod = 'GET' | 'HEAD';
|
|
31
|
+
export declare class AdminGithubProxyClient {
|
|
32
|
+
private readonly http;
|
|
33
|
+
constructor(http: HttpClient);
|
|
34
|
+
proxy(method: GithubProxyMethod, path: string, body?: unknown): Promise<GithubProxyResponse>;
|
|
35
|
+
/**
|
|
36
|
+
* C935 AC-3: project-scoped GitHub Releases read — `releases({project, limit})`
|
|
37
|
+
* resolves `project`'s own `config.github.repo` (the SAME project-config field the
|
|
38
|
+
* Portal's Releases panel already reads, `GET /projects/:slug`) and reuses the EXISTING
|
|
39
|
+
* GitHub-proxy query path (this class's own `proxy()`, → GitHub's `/repos/{repo}/
|
|
40
|
+
* releases` — the same upstream call `GitHubServiceImpl.getReleases` makes) rather than
|
|
41
|
+
* inventing a second GitHub-release data path. Works identically for ANY registered
|
|
42
|
+
* project (beacon-platform, beacon-web, ...) — the call shape never changes, only which
|
|
43
|
+
* project's repo gets resolved. Returns `[]` (never throws) when the project has no
|
|
44
|
+
* `config.github.repo` configured — a release-less project is not an error case.
|
|
45
|
+
*/
|
|
46
|
+
releases(params: {
|
|
47
|
+
project: string;
|
|
48
|
+
limit?: number;
|
|
49
|
+
}): Promise<SdkRelease[]>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=github-proxy.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-proxy.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/github-proxy.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAGhE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;CACtB;AAkBD;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,CAAA;AAE9C,qBAAa,sBAAsB;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,KAAK,CACP,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;;;;;;;;;OAUG;IACG,QAAQ,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAuBrF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { SdkError, statusToSdkCode } from '../../transport/errors.js';
|
|
2
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3
|
+
function mapGithubRelease(r) {
|
|
4
|
+
return {
|
|
5
|
+
tag: r.tag_name,
|
|
6
|
+
name: r.name || r.tag_name,
|
|
7
|
+
timestamp: r.published_at || r.created_at,
|
|
8
|
+
url: r.html_url,
|
|
9
|
+
// C937/AC-9: GitHub's `body` is nullable (an empty-body release sends `body: null`),
|
|
10
|
+
// but this contract only permits `string | undefined` — normalize `null` to
|
|
11
|
+
// `undefined` rather than leaking GitHub's own null-vs-undefined distinction.
|
|
12
|
+
body: r.body ?? undefined,
|
|
13
|
+
author: r.author?.login,
|
|
14
|
+
prerelease: r.prerelease,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export class AdminGithubProxyClient {
|
|
18
|
+
http;
|
|
19
|
+
constructor(http) {
|
|
20
|
+
this.http = http;
|
|
21
|
+
}
|
|
22
|
+
async proxy(method, path, body) {
|
|
23
|
+
return this.http.post('/github/proxy', { method, path, body });
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* C935 AC-3: project-scoped GitHub Releases read — `releases({project, limit})`
|
|
27
|
+
* resolves `project`'s own `config.github.repo` (the SAME project-config field the
|
|
28
|
+
* Portal's Releases panel already reads, `GET /projects/:slug`) and reuses the EXISTING
|
|
29
|
+
* GitHub-proxy query path (this class's own `proxy()`, → GitHub's `/repos/{repo}/
|
|
30
|
+
* releases` — the same upstream call `GitHubServiceImpl.getReleases` makes) rather than
|
|
31
|
+
* inventing a second GitHub-release data path. Works identically for ANY registered
|
|
32
|
+
* project (beacon-platform, beacon-web, ...) — the call shape never changes, only which
|
|
33
|
+
* project's repo gets resolved. Returns `[]` (never throws) when the project has no
|
|
34
|
+
* `config.github.repo` configured — a release-less project is not an error case.
|
|
35
|
+
*/
|
|
36
|
+
async releases(params) {
|
|
37
|
+
const limit = params.limit ?? 10;
|
|
38
|
+
const projectResp = await this.http.get(`/projects/${encodeURIComponent(params.project)}`);
|
|
39
|
+
const github = projectResp?.config?.github;
|
|
40
|
+
const repo = github?.repo;
|
|
41
|
+
if (!repo)
|
|
42
|
+
return [];
|
|
43
|
+
const { data, status } = await this.proxy('GET', `/repos/${repo}/releases?per_page=${limit}`);
|
|
44
|
+
// C937/AC-9: `/github/proxy` itself always answers HTTP 200 — the REAL GitHub status
|
|
45
|
+
// travels in the payload's own `status` field. Discarding it turned a genuine GitHub
|
|
46
|
+
// 403/404/429/5xx into an indistinguishable `[]`, the exact same shape as "this
|
|
47
|
+
// project has no `config.github.repo`". Only a genuinely empty 2xx success (or the
|
|
48
|
+
// no-repo-configured early return above) may legitimately produce `[]`.
|
|
49
|
+
if (status < 200 || status >= 300) {
|
|
50
|
+
throw new SdkError(statusToSdkCode(status), `GitHub proxy request failed`, status);
|
|
51
|
+
}
|
|
52
|
+
return (Array.isArray(data) ? data : []).map(mapGithubRelease);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=github-proxy.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-proxy.client.js","sourceRoot":"","sources":["../../../src/clients/admin/github-proxy.client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAwBrE,8DAA8D;AAC9D,SAAS,gBAAgB,CAAC,CAAM;IAC5B,OAAO;QACH,GAAG,EAAE,CAAC,CAAC,QAAQ;QACf,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ;QAC1B,SAAS,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,UAAU;QACzC,GAAG,EAAE,CAAC,CAAC,QAAQ;QACf,qFAAqF;QACrF,4EAA4E;QAC5E,8EAA8E;QAC9E,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK;QACvB,UAAU,EAAE,CAAC,CAAC,UAAU;KAC3B,CAAA;AACL,CAAC;AAYD,MAAM,OAAO,sBAAsB;IACF;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,KAAK,CACP,MAAyB,EACzB,IAAY,EACZ,IAAc;QAEd,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACvF,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,QAAQ,CAAC,MAA2C;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;QAChC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CACnC,aAAa,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CACpD,CAAA;QACD,MAAM,MAAM,GAAG,WAAW,EAAE,MAAM,EAAE,MAAuC,CAAA;QAC3E,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAA;QACzB,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QAEpB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CACrC,KAAK,EACL,UAAU,IAAI,sBAAsB,KAAK,EAAE,CAC9C,CAAA;QACD,qFAAqF;QACrF,qFAAqF;QACrF,gFAAgF;QAChF,mFAAmF;QACnF,wEAAwE;QACxE,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAChC,MAAM,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,6BAA6B,EAAE,MAAM,CAAC,CAAA;QACtF,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAClE,CAAC;CACJ"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { AgentContext, Memory, UpsertMemoryInput, MemoryType, MemoryTypeReadable, MemoryScope, DuplicateClusterResult } from '@beacon-build/core';
|
|
2
|
+
import type { HttpClient } from '../../transport/http-client.js';
|
|
3
|
+
export interface MemoryListResult {
|
|
4
|
+
data: Memory[];
|
|
5
|
+
meta: {
|
|
6
|
+
total: number;
|
|
7
|
+
page?: number;
|
|
8
|
+
limit?: number;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare class AdminMemoriesClient {
|
|
12
|
+
private readonly http;
|
|
13
|
+
constructor(http: HttpClient);
|
|
14
|
+
upsert(context: AgentContext, input: UpsertMemoryInput): Promise<Memory>;
|
|
15
|
+
findForSession(context: AgentContext, opts?: {
|
|
16
|
+
limit?: number;
|
|
17
|
+
}): Promise<Memory[]>;
|
|
18
|
+
list(context: AgentContext, filter?: {
|
|
19
|
+
type?: MemoryType;
|
|
20
|
+
scope?: MemoryScope;
|
|
21
|
+
limit?: number;
|
|
22
|
+
staleUnusedDays?: number;
|
|
23
|
+
}): Promise<Memory[]>;
|
|
24
|
+
delete(context: AgentContext, memoryId: string): Promise<boolean>;
|
|
25
|
+
deleteByKey(context: AgentContext, key: string, opts?: {
|
|
26
|
+
global?: boolean;
|
|
27
|
+
}): Promise<boolean>;
|
|
28
|
+
searchByVector(context: AgentContext, embedding: number[], opts?: {
|
|
29
|
+
limit?: number;
|
|
30
|
+
global?: boolean;
|
|
31
|
+
}): Promise<Memory[]>;
|
|
32
|
+
/**
|
|
33
|
+
* List memories filtered by agentId and/or project — for admin UI use.
|
|
34
|
+
* Unlike `list()`, this does not require an AgentContext.
|
|
35
|
+
*
|
|
36
|
+
* C460/AC-1/AC-3: `type`/`scope`/`unusedDays`/`offset` added so the Portal Memory
|
|
37
|
+
* Tab can fetch the anchor (`type: 'anchor', scope: 'all'`, AC-1) and the stale/
|
|
38
|
+
* never-applied filter (`unusedDays`, AC-3) without a second bespoke endpoint —
|
|
39
|
+
* these already exist on GET /memories (C458/AC-9, F403/AC-6, B364), just not
|
|
40
|
+
* wired through this admin-UI method before.
|
|
41
|
+
*/
|
|
42
|
+
listByFilter(filter: {
|
|
43
|
+
agentId?: string;
|
|
44
|
+
project?: string;
|
|
45
|
+
limit?: number;
|
|
46
|
+
type?: MemoryTypeReadable;
|
|
47
|
+
scope?: MemoryScope;
|
|
48
|
+
unusedDays?: number;
|
|
49
|
+
offset?: number;
|
|
50
|
+
}): Promise<Memory[]>;
|
|
51
|
+
/**
|
|
52
|
+
* List memories filtered by agentId and/or project, with pagination metadata (total
|
|
53
|
+
* count) — C814: powers the lightweight Memory-tab badge count, mirrors
|
|
54
|
+
* AdminDocumentsClient.listPaged (`limit: 1` + read `meta.total`, no full payload).
|
|
55
|
+
*/
|
|
56
|
+
listPaged(filter: {
|
|
57
|
+
agentId?: string;
|
|
58
|
+
project?: string;
|
|
59
|
+
limit?: number;
|
|
60
|
+
type?: MemoryTypeReadable;
|
|
61
|
+
scope?: MemoryScope;
|
|
62
|
+
}): Promise<MemoryListResult>;
|
|
63
|
+
/** C460/AC-4/AC-5: duplicate clusters + contradiction pairs for the Portal Memory Tab. */
|
|
64
|
+
clusters(filter: {
|
|
65
|
+
agentId: string;
|
|
66
|
+
project?: string;
|
|
67
|
+
}): Promise<DuplicateClusterResult>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=memories.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memories.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/memories.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,MAAM,EACN,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACzD;AAED,qBAAa,mBAAmB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxE,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUnF,IAAI,CACN,OAAO,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,UAAU,CAAA;QACjB,KAAK,CAAC,EAAE,WAAW,CAAA;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,eAAe,CAAC,EAAE,MAAM,CAAA;KAC3B,GACF,OAAO,CAAC,MAAM,EAAE,CAAC;IAcd,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWjE,WAAW,CACb,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,OAAO,CAAC;IAab,cAAc,CAChB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5C,OAAO,CAAC,MAAM,EAAE,CAAC;IASpB;;;;;;;;;OASG;IACG,YAAY,CAAC,MAAM,EAAE;QACvB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,IAAI,CAAC,EAAE,kBAAkB,CAAA;QACzB,KAAK,CAAC,EAAE,WAAW,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,MAAM,CAAC,EAAE,MAAM,CAAA;KAClB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAYrB;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE;QACpB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,IAAI,CAAC,EAAE,kBAAkB,CAAA;QACzB,KAAK,CAAC,EAAE,WAAW,CAAA;KACtB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAU7B,0FAA0F;IACpF,QAAQ,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAMjG"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
export class AdminMemoriesClient {
|
|
2
|
+
http;
|
|
3
|
+
constructor(http) {
|
|
4
|
+
this.http = http;
|
|
5
|
+
}
|
|
6
|
+
async upsert(context, input) {
|
|
7
|
+
return this.http.post('/memories', {
|
|
8
|
+
...input,
|
|
9
|
+
agentId: context.agentId,
|
|
10
|
+
project: context.project,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async findForSession(context, opts) {
|
|
14
|
+
const params = new URLSearchParams();
|
|
15
|
+
params.set('agentId', context.agentId);
|
|
16
|
+
// F428: org-scoped agent context has no single project — '' matches the pre-F428
|
|
17
|
+
// behavior for a project-less caller (out of F428's scope to redesign).
|
|
18
|
+
params.set('project', context.project ?? '');
|
|
19
|
+
if (opts?.limit != null)
|
|
20
|
+
params.set('limit', String(opts.limit));
|
|
21
|
+
return this.http.get(`/memories/for-session?${params.toString()}`);
|
|
22
|
+
}
|
|
23
|
+
async list(context, filter) {
|
|
24
|
+
const params = new URLSearchParams();
|
|
25
|
+
params.set('agentId', context.agentId);
|
|
26
|
+
// F428: org-scoped agent context has no single project — '' matches the pre-F428
|
|
27
|
+
// behavior for a project-less caller (out of F428's scope to redesign).
|
|
28
|
+
params.set('project', context.project ?? '');
|
|
29
|
+
if (filter?.type)
|
|
30
|
+
params.set('type', filter.type);
|
|
31
|
+
if (filter?.scope)
|
|
32
|
+
params.set('scope', filter.scope);
|
|
33
|
+
if (filter?.limit != null)
|
|
34
|
+
params.set('limit', String(filter.limit));
|
|
35
|
+
if (filter?.staleUnusedDays != null)
|
|
36
|
+
params.set('staleUnusedDays', String(filter.staleUnusedDays));
|
|
37
|
+
return this.http.get(`/memories?${params.toString()}`);
|
|
38
|
+
}
|
|
39
|
+
async delete(context, memoryId) {
|
|
40
|
+
try {
|
|
41
|
+
await this.http.delete(`/memories/${encodeURIComponent(memoryId)}?agentId=${encodeURIComponent(context.agentId)}`);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async deleteByKey(context, key, opts) {
|
|
49
|
+
const params = new URLSearchParams();
|
|
50
|
+
params.set('agentId', context.agentId);
|
|
51
|
+
params.set('key', key);
|
|
52
|
+
if (!opts?.global && context.project)
|
|
53
|
+
params.set('project', context.project);
|
|
54
|
+
try {
|
|
55
|
+
await this.http.delete(`/memories/by-key?${params.toString()}`);
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async searchByVector(context, embedding, opts) {
|
|
63
|
+
return this.http.post('/memories/search-by-vector', {
|
|
64
|
+
agentId: context.agentId,
|
|
65
|
+
embedding,
|
|
66
|
+
project: opts?.global ? null : context.project || null,
|
|
67
|
+
limit: opts?.limit,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* List memories filtered by agentId and/or project — for admin UI use.
|
|
72
|
+
* Unlike `list()`, this does not require an AgentContext.
|
|
73
|
+
*
|
|
74
|
+
* C460/AC-1/AC-3: `type`/`scope`/`unusedDays`/`offset` added so the Portal Memory
|
|
75
|
+
* Tab can fetch the anchor (`type: 'anchor', scope: 'all'`, AC-1) and the stale/
|
|
76
|
+
* never-applied filter (`unusedDays`, AC-3) without a second bespoke endpoint —
|
|
77
|
+
* these already exist on GET /memories (C458/AC-9, F403/AC-6, B364), just not
|
|
78
|
+
* wired through this admin-UI method before.
|
|
79
|
+
*/
|
|
80
|
+
async listByFilter(filter) {
|
|
81
|
+
const params = new URLSearchParams();
|
|
82
|
+
if (filter.agentId)
|
|
83
|
+
params.set('agent_id', filter.agentId);
|
|
84
|
+
if (filter.project)
|
|
85
|
+
params.set('project', filter.project);
|
|
86
|
+
if (filter.limit != null)
|
|
87
|
+
params.set('limit', String(filter.limit));
|
|
88
|
+
if (filter.type)
|
|
89
|
+
params.set('type', filter.type);
|
|
90
|
+
if (filter.scope)
|
|
91
|
+
params.set('scope', filter.scope);
|
|
92
|
+
if (filter.unusedDays != null)
|
|
93
|
+
params.set('unusedDays', String(filter.unusedDays));
|
|
94
|
+
if (filter.offset != null)
|
|
95
|
+
params.set('offset', String(filter.offset));
|
|
96
|
+
return this.http.get(`/memories?${params.toString()}`);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* List memories filtered by agentId and/or project, with pagination metadata (total
|
|
100
|
+
* count) — C814: powers the lightweight Memory-tab badge count, mirrors
|
|
101
|
+
* AdminDocumentsClient.listPaged (`limit: 1` + read `meta.total`, no full payload).
|
|
102
|
+
*/
|
|
103
|
+
async listPaged(filter) {
|
|
104
|
+
const params = new URLSearchParams();
|
|
105
|
+
if (filter.agentId)
|
|
106
|
+
params.set('agent_id', filter.agentId);
|
|
107
|
+
if (filter.project)
|
|
108
|
+
params.set('project', filter.project);
|
|
109
|
+
if (filter.limit != null)
|
|
110
|
+
params.set('limit', String(filter.limit));
|
|
111
|
+
if (filter.type)
|
|
112
|
+
params.set('type', filter.type);
|
|
113
|
+
if (filter.scope)
|
|
114
|
+
params.set('scope', filter.scope);
|
|
115
|
+
return this.http.getEnvelope(`/memories?${params.toString()}`);
|
|
116
|
+
}
|
|
117
|
+
/** C460/AC-4/AC-5: duplicate clusters + contradiction pairs for the Portal Memory Tab. */
|
|
118
|
+
async clusters(filter) {
|
|
119
|
+
const params = new URLSearchParams();
|
|
120
|
+
params.set('agentId', filter.agentId);
|
|
121
|
+
if (filter.project)
|
|
122
|
+
params.set('project', filter.project);
|
|
123
|
+
return this.http.get(`/memories/clusters?${params.toString()}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=memories.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memories.client.js","sourceRoot":"","sources":["../../../src/clients/admin/memories.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { HttpClient } from '../../transport/http-client.js';
|
|
2
|
+
/**
|
|
3
|
+
* AdminMetricsClient — C823.
|
|
4
|
+
*
|
|
5
|
+
* Typed SDK access to F515's aggregated request-metering read API
|
|
6
|
+
* (`GET /api/v1/metrics/requests`) and C796's aggregated campaign-analytics read API
|
|
7
|
+
* (`GET /api/v1/metrics/campaigns`) — both mounted on `userV1` behind
|
|
8
|
+
* `requireProjectOwnershipQuery('project')` (services/api/src/app/routes.ts), same
|
|
9
|
+
* auth/ownership posture as `AdminUsageClient`. `campaigns()` deliberately shares this
|
|
10
|
+
* client (not a separate `campaign-events.client.ts`) — B762/AC-2 asked for it to match
|
|
11
|
+
* `requests()`'s shape/conventions exactly, and both routes share the identical
|
|
12
|
+
* user-JWT + project-ownership guard family (unlike the anonymous ingest endpoint,
|
|
13
|
+
* `POST /api/v1/campaign-events`, which is Ops-SDK-reachable instead — see
|
|
14
|
+
* `clients/ops/campaign-events-ops.client.ts`).
|
|
15
|
+
*/
|
|
16
|
+
export declare const METRICS_REQUESTS_GROUP_BY: readonly ["routeTemplate", "path", "method", "statusClass", "actorId"];
|
|
17
|
+
export type MetricsRequestsGroupBy = (typeof METRICS_REQUESTS_GROUP_BY)[number];
|
|
18
|
+
export interface MetricsRequestsFilter {
|
|
19
|
+
project?: string;
|
|
20
|
+
org?: string;
|
|
21
|
+
/** ISO-8601 timestamp. */
|
|
22
|
+
since: string;
|
|
23
|
+
/** ISO-8601 timestamp. */
|
|
24
|
+
until: string;
|
|
25
|
+
groupBy: MetricsRequestsGroupBy;
|
|
26
|
+
}
|
|
27
|
+
export interface MetricsRow {
|
|
28
|
+
key: string;
|
|
29
|
+
requestCount: number;
|
|
30
|
+
errorCount: number;
|
|
31
|
+
avgDurationMs: number;
|
|
32
|
+
/** F478/AC-17 convention, reused verbatim: 'complete' = reconciled/exact,
|
|
33
|
+
* 'inflated' = live-flush-only/provisional — see `meta.reconciledThrough`. */
|
|
34
|
+
coverage: 'complete' | 'inflated';
|
|
35
|
+
}
|
|
36
|
+
export interface MetricsRequestsResult {
|
|
37
|
+
data: MetricsRow[];
|
|
38
|
+
meta: {
|
|
39
|
+
reconciledThrough: string | null;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export declare const CAMPAIGN_METRICS_GROUP_BY: readonly ["campaign", "channel", "referrerDomain", "eventType"];
|
|
43
|
+
export type CampaignMetricsGroupBy = (typeof CAMPAIGN_METRICS_GROUP_BY)[number];
|
|
44
|
+
export declare const CAMPAIGN_METRICS_EVENT_TYPES: readonly ["pageview", "lead_conversion"];
|
|
45
|
+
export type CampaignMetricsEventType = (typeof CAMPAIGN_METRICS_EVENT_TYPES)[number];
|
|
46
|
+
export interface CampaignMetricsFilter {
|
|
47
|
+
project: string;
|
|
48
|
+
/** `YYYY-MM-DD` (day-grain, per `campaign_metrics_rollup`'s `bucket_start`). */
|
|
49
|
+
since: string;
|
|
50
|
+
/** `YYYY-MM-DD`. */
|
|
51
|
+
until: string;
|
|
52
|
+
groupBy: CampaignMetricsGroupBy;
|
|
53
|
+
/** C837: optional filter — split any `groupBy` (e.g. `campaign`) into a
|
|
54
|
+
* pageviews-vs-leads breakdown per key via two filtered calls, instead of only
|
|
55
|
+
* globally via `groupBy=eventType`. */
|
|
56
|
+
eventType?: CampaignMetricsEventType;
|
|
57
|
+
}
|
|
58
|
+
export interface CampaignMetricsRow {
|
|
59
|
+
key: string;
|
|
60
|
+
count: number;
|
|
61
|
+
}
|
|
62
|
+
export declare class AdminMetricsClient {
|
|
63
|
+
private readonly http;
|
|
64
|
+
constructor(http: HttpClient);
|
|
65
|
+
/**
|
|
66
|
+
* GET /api/v1/metrics/requests — F515/AC-13. Returns the `{ data, meta }` envelope
|
|
67
|
+
* as-is (not auto-unwrapped) — `meta.reconciledThrough` is load-bearing (AC-9/AC-10:
|
|
68
|
+
* a caller computing anything billing-relevant MUST filter to `coverage: 'complete'`
|
|
69
|
+
* rows and/or windows before the watermark), so this uses `getEnvelope` rather than
|
|
70
|
+
* `get` (which would silently drop `meta`).
|
|
71
|
+
*/
|
|
72
|
+
requests(filter: MetricsRequestsFilter): Promise<MetricsRequestsResult>;
|
|
73
|
+
/**
|
|
74
|
+
* GET /api/v1/metrics/campaigns — C796/AC-4. `{ data: CampaignMetricsRow[] }` only
|
|
75
|
+
* (no `meta`/watermark — campaign analytics has no reconciliation job, § C796
|
|
76
|
+
* Architecture Simplification) — `get` unwraps to the bare row array.
|
|
77
|
+
*/
|
|
78
|
+
campaigns(filter: CampaignMetricsFilter): Promise<CampaignMetricsRow[]>;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=metrics.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/metrics.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE;;;;;;;;;;;;;GAaG;AAKH,eAAO,MAAM,yBAAyB,wEAM5B,CAAA;AACV,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/E,MAAM,WAAW,qBAAqB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,sBAAsB,CAAA;CAClC;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB;mFAC+E;IAC/E,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAA;CACpC;AAED,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,UAAU,EAAE,CAAA;IAClB,IAAI,EAAE;QAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAC7C;AAID,eAAO,MAAM,yBAAyB,iEAK5B,CAAA;AACV,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/E,eAAO,MAAM,4BAA4B,0CAA2C,CAAA;AACpF,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAA;AAEpF,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAA;IACb,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,sBAAsB,CAAA;IAC/B;;4CAEwC;IACxC,SAAS,CAAC,EAAE,wBAAwB,CAAA;CACvC;AAED,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,kBAAkB;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C;;;;;;OAMG;IACG,QAAQ,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAY7E;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAShF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AdminMetricsClient — C823.
|
|
3
|
+
*
|
|
4
|
+
* Typed SDK access to F515's aggregated request-metering read API
|
|
5
|
+
* (`GET /api/v1/metrics/requests`) and C796's aggregated campaign-analytics read API
|
|
6
|
+
* (`GET /api/v1/metrics/campaigns`) — both mounted on `userV1` behind
|
|
7
|
+
* `requireProjectOwnershipQuery('project')` (services/api/src/app/routes.ts), same
|
|
8
|
+
* auth/ownership posture as `AdminUsageClient`. `campaigns()` deliberately shares this
|
|
9
|
+
* client (not a separate `campaign-events.client.ts`) — B762/AC-2 asked for it to match
|
|
10
|
+
* `requests()`'s shape/conventions exactly, and both routes share the identical
|
|
11
|
+
* user-JWT + project-ownership guard family (unlike the anonymous ingest endpoint,
|
|
12
|
+
* `POST /api/v1/campaign-events`, which is Ops-SDK-reachable instead — see
|
|
13
|
+
* `clients/ops/campaign-events-ops.client.ts`).
|
|
14
|
+
*/
|
|
15
|
+
// ── GET /v1/metrics/requests (F515/AC-13) ───────────────────────────────────────
|
|
16
|
+
// C838: 'path' added — F26's beacon-web per-page dashboard query.
|
|
17
|
+
export const METRICS_REQUESTS_GROUP_BY = [
|
|
18
|
+
'routeTemplate',
|
|
19
|
+
'path',
|
|
20
|
+
'method',
|
|
21
|
+
'statusClass',
|
|
22
|
+
'actorId',
|
|
23
|
+
];
|
|
24
|
+
// ── GET /v1/metrics/campaigns (C796/AC-4) ───────────────────────────────────────
|
|
25
|
+
export const CAMPAIGN_METRICS_GROUP_BY = [
|
|
26
|
+
'campaign',
|
|
27
|
+
'channel',
|
|
28
|
+
'referrerDomain',
|
|
29
|
+
'eventType',
|
|
30
|
+
];
|
|
31
|
+
export const CAMPAIGN_METRICS_EVENT_TYPES = ['pageview', 'lead_conversion'];
|
|
32
|
+
export class AdminMetricsClient {
|
|
33
|
+
http;
|
|
34
|
+
constructor(http) {
|
|
35
|
+
this.http = http;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* GET /api/v1/metrics/requests — F515/AC-13. Returns the `{ data, meta }` envelope
|
|
39
|
+
* as-is (not auto-unwrapped) — `meta.reconciledThrough` is load-bearing (AC-9/AC-10:
|
|
40
|
+
* a caller computing anything billing-relevant MUST filter to `coverage: 'complete'`
|
|
41
|
+
* rows and/or windows before the watermark), so this uses `getEnvelope` rather than
|
|
42
|
+
* `get` (which would silently drop `meta`).
|
|
43
|
+
*/
|
|
44
|
+
async requests(filter) {
|
|
45
|
+
const params = new URLSearchParams();
|
|
46
|
+
if (filter.project)
|
|
47
|
+
params.set('project', filter.project);
|
|
48
|
+
if (filter.org)
|
|
49
|
+
params.set('org', filter.org);
|
|
50
|
+
params.set('since', filter.since);
|
|
51
|
+
params.set('until', filter.until);
|
|
52
|
+
params.set('groupBy', filter.groupBy);
|
|
53
|
+
return this.http.getEnvelope(`/metrics/requests?${params.toString()}`);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* GET /api/v1/metrics/campaigns — C796/AC-4. `{ data: CampaignMetricsRow[] }` only
|
|
57
|
+
* (no `meta`/watermark — campaign analytics has no reconciliation job, § C796
|
|
58
|
+
* Architecture Simplification) — `get` unwraps to the bare row array.
|
|
59
|
+
*/
|
|
60
|
+
async campaigns(filter) {
|
|
61
|
+
const params = new URLSearchParams();
|
|
62
|
+
params.set('project', filter.project);
|
|
63
|
+
params.set('since', filter.since);
|
|
64
|
+
params.set('until', filter.until);
|
|
65
|
+
params.set('groupBy', filter.groupBy);
|
|
66
|
+
if (filter.eventType)
|
|
67
|
+
params.set('eventType', filter.eventType);
|
|
68
|
+
return this.http.get(`/metrics/campaigns?${params.toString()}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=metrics.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.client.js","sourceRoot":"","sources":["../../../src/clients/admin/metrics.client.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,mFAAmF;AAEnF,kEAAkE;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,eAAe;IACf,MAAM;IACN,QAAQ;IACR,aAAa;IACb,SAAS;CACH,CAAA;AA4BV,mFAAmF;AAEnF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,UAAU;IACV,SAAS;IACT,gBAAgB;IAChB,WAAW;CACL,CAAA;AAGV,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAU,CAAA;AAqBpF,MAAM,OAAO,kBAAkB;IACE;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAC,MAA6B;QACxC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QACpC,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACzD,IAAI,MAAM,CAAC,GAAG;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAC3C,CAAA;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,MAA6B;QACzC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QACpC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACrC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACrC,IAAI,MAAM,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,sBAAsB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACzF,CAAC;CACJ"}
|