feat(coding): add generated Data Service SDK skill

This commit is contained in:
2026-08-26 23:26:18 +08:00
parent 552c6162a5
commit 549069dffe
8 changed files with 1454 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
# Task: Implement ML-07 generated Data Service SDK and bundled skill
## Identity
- Task ID: 20260826-ml07-data-service-sdk-skill-6b4e91c2
- Mode: Feature
- Branch: codex/20260826-ml07-data-service-sdk-skill-6b4e91c2-ml07-data-service-sdk-skill
- Worktree: D:\Datas\OthersProjects\makelore-ml07-data-service-sdk-skill-6b4e91c2
- Base commit: 552c6162a57894b713ea1f47d356fa48c0fc0cf1
- Owner: ml07-sdk-skill
- Status: Ready for integration
## Scope
- Implement ML-07 from Data Service P0 spec sections 1113 at exact base
`552c6162a57894b713ea1f47d356fa48c0fc0cf1`.
- Add the canonical TypeScript/JavaScript ESM SDK templates and bundled
`data-service` Skill, register/package them through the existing coding-skill
loader, and add focused SDK/install/registry/workflow tests.
- Preserve the Main-owned ephemeral runtime boundary and leave ML-08 merge
integration and ML-09 review to the repository coordinator.
## Intent And Constraints
- The generated SDK reads and validates `globalThis.__MAKELORE_DATA__` on each
call, uses only local injected endpoint/token capability, and exposes the
frozen get/list/put/delete surface plus optional local `add`.
- SDK requests encode collection/document path segments, send exactly one
strong `If-Match` for `ifRevision`, strictly parse DTO/error responses, avoid
retries/cache/offline/subscription/schema/policy behavior, and return stable
`runtime_unavailable` without network access for absent or invalid injection.
- Skill workflow is inspect → explain/propose → explicit intent → one
`data_service_configure` → layout-aware verbatim template install → minimal
source edit → data-enabled preview write/read-back → report configured
collections and observed quota only after matching read-back. Configuration
failure or `project_identity_required` causes zero source edits.
- Follow the existing bundled skill frontmatter/registry convention and use
directly packaged assets/references; no npm package, seed endpoint, manifest,
hash, migration, cloud URL, Works credential, retry/cache, or ML-08 changes.
## Planning Gate
- Result: Passed on 2026-08-26 in the isolated worktree after `check_project_docs.py`
and `task_context.py start/status --json` confirmed this task owns the exact
branch, worktree, and base.
- Loaded repository `AGENTS.md`, `maintain-project-docs`, `writing-for-agents`
and `SKILL-MECHANICS`, project-memory entry/current/decision/architecture/
domain/evidence/reflection/commitment/stale documents, the parent client task
record, and server canonical spec sections 1113, ML-07 ticket, integration
contract, and accepted ADR.
- The parent client coordinator is a separate owner at its recorded frontier;
its ML-01 through ML-06 integration is the stated exact base. No active peer
declared a conflicting SDK/Skill ownership; historical planning records with
placeholder scopes remain unknown but are outside these paths. Canonical
project-positioning and success-criteria files retain placeholders/stale
language, so the server spec/contract/ADR and parent task record are the
authoritative task pointers.
## Implementation Plan
1. Inspect current SDK/runtime seams, bundled skill registry/resource packaging,
and existing test conventions; record the exact interfaces before writing
red tests.
2. Add failing tests for the SDK contract, layout-aware install/repeat/conflict,
Skill registration/package contents, and ordered workflow guards.
3. Implement the smallest canonical TS/JS assets, direct SDK helper behavior,
registry/resource exposure, and Skill instructions/fixtures required by the
tests.
4. Run focused tests, packaged-resource listing, typecheck/lint/build and
deterministic regression checks; then complete this task record and drift
gate with actual results.
## Outcome
- Implemented ML-07 as a bundled, auditable Data Service Skill and paired
TypeScript/JavaScript ESM SDK templates. The registry now advertises the
opt-in `data-service` skill while the existing default skill selection stays
unchanged. The Skill documents inspect/propose/explicit-intent/configure-once,
layout-aware verbatim installation, conflict/no-op behavior, data-enabled
preview put/get read-back, and post-verification reporting boundaries.
- The SDK reads and validates the injected loopback capability at every public
operation, enforces contract version 1, encodes path segments, maps one
strong `If-Match`, parses direct DTOs/errors strictly, freezes safe error
projections, avoids retries and cloud fallbacks, and returns stable
`runtime_unavailable` without network access when the capability is absent or
invalid. Optional `add` only creates a local UUID before delegating to PUT.
- No ML-08 changes, npm package, seed endpoint, manifest/hash/migration layer,
cloud URL/Works credential, or forbidden runtime feature was added. Skill
installation remains agent-driven by the canonical markdown workflow; tests
cover the documented direct-text policy with src TypeScript, src JavaScript,
and root TypeScript fixtures.
## Verification
- Initial red focused run before implementation: the new SDK/Skill test file
failed because the canonical asset directory and workflow did not yet exist.
- Focused SDK/Skill suite after implementation:
`pnpm exec vitest run tests/unit/data-service-sdk-assets.test.ts
--maxWorkers=1` — 1 file / 14 tests passed, covering both assets, runtime
injection/no-network behavior, path/ETag/body/delete semantics, strict
DTO/error projection, no retry, registry/package listing, workflow ordering,
and first/repeat/conflict fixture policy.
- Adjacent focused suite:
`pnpm exec vitest run tests/unit/data-service-sdk-assets.test.ts
tests/unit/skill-display.test.ts tests/unit/pi-resource-loader.test.ts
tests/unit/pi-product-tools.test.ts --maxWorkers=1` — 4 files / 29 tests
passed.
- `pnpm test` — 188 files / 1610 tests passed, 2 skipped.
- `pnpm typecheck` — passed, including direct TypeScript asset compilation.
- `pnpm lint:check` — 0 errors and 5 pre-existing warnings in
`src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`.
- `pnpm run build:vite` — renderer, Main, preload, and utility builds passed;
existing dynamic-import and large-chunk warnings remain.
- `pnpm test:electron:windows` — 2 files / 4 tests passed.
- `pnpm exec playwright test tests/e2e/project-configuration-skills.spec.ts
--config=playwright.config.ts` — 1 test passed.
- `git diff --check` — passed. Task-aware drift check passed and
`task_context.py complete` returned `READY_FOR_INTEGRATION` for this task.
- The parent coordinator's inherited full E2E evidence records one unrelated,
pre-existing timeout at `tests/e2e/pi-coding-first-chat.spec.ts:575` while
the current-model combobox remained disabled; this ML-07 task did not rerun
or mask that failure.
## Follow-ups
- Parent coordinator must cherry-pick the single ML-07 commit into its client
integration branch, run code review/remediation, and perform the required
real PostgreSQL plus signed-in data-enabled preview acceptance. Repository
tests and the focused E2E above do not claim live-service success.
## Promotion Candidates
- None recorded.