hyp report CLI: member-facing reports plane commands, plus bundled report skills (LLP 0111)#338
Conversation
…LLP 0111) Member-facing CLI for the server's org-scoped reports plane (server LLP 0059/0060): publish a single .html/.md document or a folder bundle (tar --format=ustar, content-hash retry safety), list the org's index, fetch the entry document or one artifact, and delete with purge-style confirmation. Zero new credential machinery: targets, the 0600 store, and the silent OIDC refresh resolve exactly as --remote queries do, with the reports endpoint derived from the one registered target URL (sibling of the identity and MCP derivations). Client-side fail-fast copies the server's kind/period grammar and entry-document rule; a write 401 that survives the refresh retry names both remedies (expired session, or the missing publisher role / publish token) since the server answers 401 to a valid read-class session that lacks the report-publish scope. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…refs Record why --period never defaults from the current date (a now-derived default mislabels the publish-Monday-about-last-week case, and only the report generator knows the coverage window) and why the report group stays a REST command group rather than client verbs or client-side MCP tools, resolving two open questions. Annotate the two constraint sites. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…yp report Add hypaware-publish-report and hypaware-apply-report-changes to the claude and codex plugin workspaces, rewritten CLI-first per LLP 0111's consequence: publishing is 'hyp report publish' (the CLI owns ustar bundling, content-hash retry safety, and fail-fast validation; the curl recipe survives as a no-logged-in-hyp fallback), credentials are the --remote login stack instead of env-var tokens, and the apply skill reads a server's reports plane via 'hyp report list/get'. The codex copies swap Claude-specific tool mentions. Also drop the four superseded report skills (adoption/improvement/security/ spend) from both plugin manifests and skill-register loops: #320 deleted their directories but left them registered, and attach copyDirs a registered skill's sourceDir, so the stale entries broke skill install. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
neutral review of
|
philcunliffe
left a comment
There was a problem hiding this comment.
changes-requested (1 minor finding). src/core/cli/report_commands.js:81 uses an inline import('node:fs').Stats type, which CLAUDE.md bans ("Never use inline import('...') types") and the repo's own plugin_doctor flags (diagnose.js:221). The file already has an @import block at lines 24-26, so add @import { Stats } from 'node:fs' there and use the bare Stats. Everything else - correctness, auth flow, bundle retry-safety, tests, LLP 0111 anchors, and the #320 manifest/disk skill reconciliation - checks out. See the review-record comment for the full pass. Marker:
neutral review (round 2) - head
|
|
neutral approves PR #338 at head |
Summary
hyp report publish|list|get|delete(LLP 0111): member-facing CLI for the server's org-scoped reports plane, riding the existing--remotecredential stack (target registry, 0600 store, silent OIDC refresh) with the reports endpoint derived from the one registered target URL. Directory publishes build a gzipped plain-ustar bundle; kind/period grammar and the entry-document rule fail fast client-side; publishes always sendx-report-content-hashfor retry safety; delete followshyp purge's confirmation posture; a write 401 that survives the refresh retry names both remedies (expired session, or missing publisher role / publish token).--periodnever defaults from the current date (only the report generator knows the coverage window), and the report group stays a REST command group rather than client verbs or client-side MCP tools (server-registeredreport_list/report_getMCP tools are the server corpus's to add). Matching@refannotations at the two constraint sites.hypaware-publish-reportandhypaware-apply-report-changesto the claude and codex plugin workspaces. Publishing is nowhyp report publishplus argument selection (the curl recipe survives only as a no-logged-in-hypfallback); the apply skill reads a server's reports plane viahyp report list/get; codex copies swap Claude-specific tool mentions.copyDirs every registered skill'ssourceDir. Both lists now match the directories on disk.Test plan
npm test: report-commands suite (312 lines of new coverage in e618789) passes; the 8 failing tests on this branch (squirrelingchunks is not async iterablein scanColumn/context-graph) fail identically on a clean checkout and are unrelatednode --checkon both plugin entrypoints; bothhypaware.plugin.jsonfiles parsesrc/core/cli/report_commands.js(flags, error messages, confirmation posture)🤖 Generated with Claude Code