13 Commits
Author SHA1 Message Date
pnoker 33741fb333 build(deps): bump dc3-cli js-yaml to 4.3.2
supersedes dependabot #217 (stale develop base); js-yaml 4.3.2 carries
the security fix, verified locally with the full cli suite
2026-09-18 22:20:16 +08:00
pnoker 9482cf0be4 build(deps): bump dc3-cli vitest to 4.1.11
supersedes dependabot #216/#213 which targeted the stale develop
branch; verified locally: 67/67 tests, build and lint clean
2026-09-18 22:19:06 +08:00
pnoker e4523f993b fix(api): accept snake_case params on history lookup endpoints
- command_history/get_by_record_id now binds the declared wire name
  record_id instead of the raw parameter name recordId, matching the
  event_history twin and the frontend/CLI clients
- point_command_history/get_by_command_id likewise binds command_id,
  and the accepted statusUri built by point_command write now uses it
- openapi-data snapshot updated for both query params
- cli command history and web mock handlers aligned to the same names
- web mock registers command_history under the data service prefix
2026-09-18 09:44:36 +08:00
pnoker 66aab58f20 build: standardize repository tooling and quality gates 2026-09-02 20:51:10 +08:00
pnoker eae86b58fc refactor(storage)!: unify platform persistence on reactive postgresql
- migrate auth, manager, data, and agentic persistence to R2DBC
- hard cut pagination, facade, gateway, web, and CLI contracts
- remove legacy database and TSDB adapters and document validation gates

BREAKING CHANGE: platform persistence now requires PostgreSQL 18 with TimescaleDB and the new reactive API contracts.
2026-09-01 22:03:16 +08:00
pnoker 436c979fe9 feat(cli): agentic session lifecycle and action approval commands
dc3 session (list/get/messages/rename/delete) over the conversation
routes and dc3 action (pending/confirm/reject) for the high-risk
tool-call approval loop, closing the last P0 coverage gap from the
2026-08-27 audit. Six suites assert path shaping, query encoding and
method selection.
2026-09-01 22:03:15 +08:00
pnoker d9c7730da3 docs(cli): document analytics and alert deep-analysis commands 2026-09-01 22:03:15 +08:00
pnoker 1b6903cdfb feat(cli): analytics group and alert deep-analysis surface
- dc3 analytics run <op> --args posts to the nine /api/v3/data/analytics
  operations (S19 agent face); analytics list prints the catalog
- dc3 alert gains activity/storm-sources/flapping/correlation/
  peer-deviation/aging/mtta/change-impact (GET), latency, silent-sources,
  coverage-gap and bulk-confirm, with snake_case param mapping and
  generic k=v passthrough
- seven new suites cover path shaping, param mapping, passthrough,
  bulk body verbatim and op validation
2026-09-01 22:03:15 +08:00
pnoker 31e278c005 fix(cli): restore login against cookie-based token contract
- generate responses now acknowledge with data:"ok" and deliver the
  ticket via the dc3-token cookie; extractTicket prefers a JWT-shaped
  body (June-era builds) and falls back to the cookie
- setProfile validated an empty template instead of the merged value,
  crashing every config write on profiles lacking username; validate
  the merge instead. Live-verified end to end against auth+gateway
2026-09-01 22:03:15 +08:00
pnoker cff9af8764 feat(cli): dual-transport tools command group over /mcp
First Phase-3 slice: dc3 tools list/call speak JSON-RPC to POST /mcp
with the same Bearer ticket as REST, reading the live tool catalog
instead of hard-coded paths. Requires an oauth-type login; classic
tickets get a clean exit-code-3 auth error. Five unit suites cover
request shaping, scope rejection, rpc errors and the 401 challenge.
2026-09-01 22:03:14 +08:00
pnoker fe251825fe feat(cli): add hidden oauth client_credentials login
dc3 auth login --oauth exchanges a registered MCP client id/secret
for an RS256 access ticket at /oauth2/token and stores it as an
oauth-type state whose requests travel as Authorization: Bearer.
Renewal is intentionally not attempted without a stored secret;
expiry surfaces a clean auth error. Option is hidden from help until
gateway-side RS256 verification is enabled in deployments.
2026-09-01 22:03:14 +08:00
pnoker 35e625de9a docs(design): plan console cli onboarding; restore dc3-cli package name
Revert the premature McpServer.vue change (implementation was not
requested). Record the onboarding UX contract in
token-unification-mcp-first-cli.md §4.1 instead, and rename the CLI
package back to dc3-cli per review.
2026-09-01 22:03:14 +08:00
pnoker b828719d38 feat(cli): adopt dc3-cli into the repository as a standalone module
Move the previously untracked TypeScript CLI into iot-dc3 as an
independently managed module next to dc3-web:

- pnpm workspace (pnpm@11.24.0) with esbuild build approval,
  package renamed to iot-dc3-cli, npm lockfile dropped
- add eslint flat config; lint now runs green after removing
  unused imports/vars and adding switch-case breaks in config.ts
- document CLI conventions and commands in AGENTS.md
2026-09-01 22:03:13 +08:00