@withpica/mcp-server 2.43.0 → 2.45.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.
Files changed (50) hide show
  1. package/CHANGELOG.md +87 -4
  2. package/README.md +3 -4
  3. package/dist/prompts/index.d.ts +8 -0
  4. package/dist/prompts/index.d.ts.map +1 -1
  5. package/dist/prompts/index.js +134 -1
  6. package/dist/prompts/index.js.map +1 -1
  7. package/dist/resources/agent-guide.d.ts +2 -2
  8. package/dist/resources/agent-guide.d.ts.map +1 -1
  9. package/dist/resources/agent-guide.js +184 -20
  10. package/dist/resources/agent-guide.js.map +1 -1
  11. package/dist/resources/index.d.ts.map +1 -1
  12. package/dist/resources/index.js +55 -1
  13. package/dist/resources/index.js.map +1 -1
  14. package/dist/resources/required-schemas.generated.d.ts +281 -19
  15. package/dist/resources/required-schemas.generated.d.ts.map +1 -1
  16. package/dist/resources/required-schemas.generated.js +591 -25
  17. package/dist/resources/required-schemas.generated.js.map +1 -1
  18. package/dist/resources/required-schemas.source.d.ts.map +1 -1
  19. package/dist/resources/required-schemas.source.js +318 -28
  20. package/dist/resources/required-schemas.source.js.map +1 -1
  21. package/dist/tools/agreement-types.js +1 -1
  22. package/dist/tools/agreement-types.js.map +1 -1
  23. package/dist/tools/agreements.js +3 -3
  24. package/dist/tools/agreements.js.map +1 -1
  25. package/dist/tools/audio-files.js +4 -4
  26. package/dist/tools/audio-files.js.map +1 -1
  27. package/dist/tools/dashboard.js +5 -5
  28. package/dist/tools/dashboard.js.map +1 -1
  29. package/dist/tools/duplicates.d.ts +9 -0
  30. package/dist/tools/duplicates.d.ts.map +1 -1
  31. package/dist/tools/duplicates.js +24 -5
  32. package/dist/tools/duplicates.js.map +1 -1
  33. package/dist/tools/enrichment.js +6 -6
  34. package/dist/tools/enrichment.js.map +1 -1
  35. package/dist/tools/exports.js +5 -5
  36. package/dist/tools/exports.js.map +1 -1
  37. package/dist/tools/index.d.ts +37 -1
  38. package/dist/tools/index.d.ts.map +1 -1
  39. package/dist/tools/index.js +54 -2
  40. package/dist/tools/index.js.map +1 -1
  41. package/dist/tools/multimedia.js +4 -4
  42. package/dist/tools/multimedia.js.map +1 -1
  43. package/dist/tools/recovery-hints.js +1 -1
  44. package/dist/tools/recovery-hints.js.map +1 -1
  45. package/dist/tools/sessions.js +4 -4
  46. package/dist/tools/sessions.js.map +1 -1
  47. package/dist/tools/split-sheets.js +7 -7
  48. package/dist/tools/split-sheets.js.map +1 -1
  49. package/package.json +2 -2
  50. package/server.json +2 -2
package/CHANGELOG.md CHANGED
@@ -11,6 +11,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [2.45.0] - 2026-05-01
15
+
16
+ ### Added
17
+
18
+ - **ADR-214 Phase 3a — 3 new workflow schema resources.**
19
+ - `pica://schemas/session-required` (studio session logging — `pica_sessions_create` primary; `pica_sessions_types` companion for session_type_id lookup; `pica_sessions_get` / `_list` for read).
20
+ - `pica://schemas/split-sheet-required` (publishing royalty splits on works — `pica_split_sheet_generate` primary; `pica_split_sheet_send` / `_get` / `_list` companions).
21
+ - `pica://schemas/recording-splits-required` (master ownership splits on recordings — `pica_recording_splits_create` primary with ADR-200 form-confirmation gate; `pica_recording_splits_verify` / `_list` companions).
22
+
23
+ Each derives required + recommended fields from live tool input schemas at build time; `recording-splits-required` embeds the `split_type` and `role` CHECK enums (4 + 8 values respectively) from a hand-edited `schema-mirror.json` entry verified against prod project `fwgcmjhlwevdnxgqmkmh`.
24
+
25
+ - **WorkflowTag union expanded 12 → 15 values** (added `session-required`, `split-sheet-required`, `recording-splits-required`). 11 tools migrated from `"infrastructure"` to their P3a workflow tag (4 sessions + 4 split-sheet + 3 recording-splits).
26
+
27
+ - **Agent-guide expanded 6 → 14 sections** for authenticated mode:
28
+ - 3 new write workflow sections (sessions, split-sheet, recording-splits) with canonical tool sequences and schema-URI footers.
29
+ - 1 new identifier-assign narrative section explaining the inline-update pattern (`pica_*_update` accepts identifiers as inline fields including satellite-routed person identifiers — `isni`, `musicbrainz_id`, `wikidata_id`, `discogs_artist_id`, `deezer_artist_id` route to `person_enrichment` automatically; the surface is uniform).
30
+ - 4 new read-workflow sections covering find-duplicates → merge, query → inspect → resolve gap-finding chain, lookup-person by industry identifier, and audit catalog completeness via dashboard tools.
31
+
32
+ Authenticated guide now ~12,750 B (lobby variant unchanged ~855 B).
33
+
34
+ - **`schema-mirror.json` extended with `recording_splits` table** for `split_type` + `role` CHECK enum embedding. `sessions.status` and `split_sheets.status` documented inline in schema `summary` fields rather than `enum_tables` because they are not DB-CHECK-enforced.
35
+
36
+ - **2 new MCP prompts.**
37
+ - `log-a-session` — guided studio session logging with optional `work_id` argument.
38
+ - `set-recording-splits` — guided master ownership split assignment with ADR-200 propose-and-confirm + verify flow; takes optional `recording_id`.
39
+
40
+ - **`_meta.schemas` dispatcher emit on workflow-tagged tool results.** New `attachSchemaHints` private method on `ToolRegistry` mirrors the existing `attachSessionState` pattern verbatim — same merge semantics, null-safe handling, fail-open behavior. Every tool whose `workflows` field references one or more schema URIs auto-emits `_meta.schemas: ["pica://schemas/<workflow>-required", ...]` on successful results. 47 workflow-tagged tools across 13 files automatically tagged via the dispatcher hook (no per-executor edits). `ToolResult._meta` interface widened to `{ session_state?: SessionState; schemas?: string[]; [key: string]: unknown }`. Cross-transport survival verified — both HTTP (`app/api/mcp/route.ts`) and stdio (`mcp-server/src/server.ts`) preserve `_meta` end-to-end.
41
+
42
+ - **Cost-model entries for ADR-217 + ADR-218 tools** (`pica_notifications_recent` → READ, `pica_notification_acknowledge` → WRITE, `pica_storage_configure_start` + `pica_storage_disconnect` → ADMIN). Unblocks ADR-180 lint cost-model coverage check; ADR-215 shadow-metering now records `billable_events` rows for these tools.
43
+
44
+ ### Changed
45
+
46
+ - **11 existing prompts updated to reference ADR-214 schema URIs** where the workflow shape is implicated: `analyze-catalog`, `find-duplicates`, `enrich-metadata`, `verify-works`, `assess-catalog-health`, `audit-credits`, `new-catalog-setup`, `close-the-loop`, `register-my-works`, `prepare-for-sync`, `workspace-autopilot`. Agents invoking a refreshed prompt pick up the relevant `pica://schemas/<workflow>-required` (and `pica://docs/agent-guide` where orientation helps) on first read.
47
+
48
+ - **`pica_merge_duplicates.entity_type` now accepts both forms.** Previously the enum was singular (`"work" | "person"`) while `pica_find_duplicates` was plural (`"works" | "people"`) — a real footgun documented in ADR-214 P3a Stage 1 R4. Tool now accepts all four (`works` / `people` / `work` / `person`); canonical plural form (`works` / `people`) matches the rest of the catalog tools. Internally coerces to plural for the success message and to singular for the SDK call. Backwards-compatible — no existing caller breaks. Success message no longer renders the broken `work(s)` / `person(s)` artifact when callers pass the plural form. The R4 confirm-branch (two-step ADR-200 confirmation flow) also uses canonical coercion with a try/catch fallback to "entities" so unknown entity_types don't break the confirm UX.
49
+
50
+ ### Fixed
51
+
52
+ - **`pica_recordings_by_work` drift cleanup.** Removed tool was still referenced in:
53
+ - `mcp-server/src/prompts/index.ts` `verify-works` prompt body — swapped to `pica_recordings_query` with `work_id` filter (single-line drift fix).
54
+ - `mcp-server/src/tools/recovery-hints.ts` `next_tool` annotation — swapped to `pica_recordings_query`.
55
+ - `mcp-server/README.md` Recordings Management section — section refreshed to current 5 tools (`_query`, `_inspect`, `_create`, `_update`, `_delete`); count corrected 6 → 5. Larger README drift in works/people/etc. sections flagged as separate cleanup.
56
+ - `@withpica/mcp-utils` `recovery-hints.ts` DUPLICATE_ISRC `next_tool` — same swap (mcp-utils@1.15.1).
57
+
58
+ - **Source ↔ dist invariant restored** for `prompts/index.{js,d.ts,*.map}` (PR #173 source landed without committed dist regen — develop's dist had been missing `log-a-session` + `set-recording-splits`) and `tools/recovery-hints.{js,*.map}` (source was correct; dist was stale). No semantic change beyond what was already on develop; clears phantom local-tsc errors per `feedback_root_tsc_stale_mcp_dist`.
59
+
60
+ ### Dependencies
61
+
62
+ - `@withpica/mcp-utils` `^1.14.0` → `^1.15.1` (recovery-hints `next_tool` fix).
63
+
64
+ ## [2.44.0] - 2026-04-30
65
+
66
+ ### Added
67
+
68
+ - **ADR-214 Phase 2 — 6 new workflow schema resources.**
69
+ - `pica://schemas/audio-upload-required` (3-step chain: presigned →
70
+ complete → analyze + poll)
71
+ - `pica://schemas/enrichment-resolve-required` (resolve fan-out →
72
+ proposals_list → proposal_apply / reject)
73
+ - `pica://schemas/agreement-required`
74
+ - `pica://schemas/multimedia-required`
75
+ - `pica://schemas/export-required`
76
+ - `pica://schemas/claim-required`
77
+
78
+ Each derives required + recommended fields from the live tool input
79
+ schemas at build time and embeds CHECK enums from `schema-mirror.json`.
80
+ Agent-guide expanded with 6 workflow sections (4 net-new, 2 rewrites
81
+ with schema-URI footers); intro bumps "five core" → "eleven core" and
82
+ "~227 tools" → "~231 tools".
83
+
84
+ - **WorkflowTag union expanded to 12 values** (5 Phase 1 + 6 Phase 2 +
85
+ `infrastructure`). 28 tools migrated from `"infrastructure"` to their
86
+ Phase 2 workflow tag (4 audio-upload, 6 enrichment-resolve, 4
87
+ agreement, 4 multimedia, 5 export, 5 claim).
88
+ - **`schema-mirror.json` extended with 6 new tables** for Phase 2
89
+ CHECK-constraint enum resolution (agreements, discovered_artists,
90
+ discovered_credits, discovered_custody, enrichment_proposals,
91
+ multimedia_items). Verified live against prod project
92
+ `fwgcmjhlwevdnxgqmkmh`.
93
+ - **HTTP transport coverage** — `app/api/mcp/route.ts` `UI_RESOURCE_DEFS`
94
+ - `UI_RESOURCE_BODIES` extended with the 6 new schema URIs (matches
95
+ the Phase 1 pattern from PR #152). Per
96
+ `feedback_cross_transport_resource_coverage`.
97
+
14
98
  ## [2.42.0] - 2026-04-30
15
99
 
16
100
  ### Added
@@ -27,10 +111,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
27
111
  to each event's `seen_in` array. Idempotent — re-acknowledging is a no-op.
28
112
  Org-scoped server-side: out-of-org ids are silently skipped. Empty
29
113
  `event_ids` returns a `VALIDATION_ERROR` without hitting the API.
30
- - **Both tools registered in the existing `notifications` taxonomy bucket
31
- + TOOL_METADATA (`category: "comms"`)** + tagged `workflows: "infrastructure"`
32
- per ADR-214 W4. Ride alongside the legacy `pica_notifications_*` and
33
- `pica_notify_*` families — the agent disambiguates from the descriptions.
114
+ - \*\*Both tools registered in the existing `notifications` taxonomy bucket
115
+ - TOOL*METADATA (`category: "comms"`)\*\* + tagged `workflows: "infrastructure"`
116
+ per ADR-214 W4. Ride alongside the legacy `pica_notifications*_`and`pica*notify*_` families — the agent disambiguates from the descriptions.
34
117
 
35
118
  ### Changed
36
119
 
package/README.md CHANGED
@@ -39,14 +39,13 @@ The Model Context Protocol (MCP) is an open standard that enables AI assistants
39
39
  - `pica_people_enrich_isni` - Enrich from ISNI
40
40
  - `pica_people_enrich_musicbrainz` - Enrich from MusicBrainz
41
41
 
42
- **Recordings Management (6 tools)**
42
+ **Recordings Management (5 tools)**
43
43
 
44
- - `pica_recordings_list` - List recordings
45
- - `pica_recordings_get` - Get recording details
44
+ - `pica_recordings_query` - List/search recordings; filter by `work_id` (replaces removed `pica_recordings_by_work`)
45
+ - `pica_recordings_inspect` - Get recording details (sections-based)
46
46
  - `pica_recordings_create` - Create new recording
47
47
  - `pica_recordings_update` - Update recording
48
48
  - `pica_recordings_delete` - Delete recording
49
- - `pica_recordings_by_work` - Get recordings of a work
50
49
 
51
50
  **Search & Analytics (2 tools)**
52
51
 
@@ -74,5 +74,13 @@ export declare class PromptRegistry {
74
74
  * Prepare for sync — get catalog sync-ready
75
75
  */
76
76
  private getPrepareForSyncPrompt;
77
+ /**
78
+ * Log a session — guided studio session capture
79
+ */
80
+ private getLogASessionPrompt;
81
+ /**
82
+ * Set recording splits — guided master ownership split assignment with verify gate
83
+ */
84
+ private getSetRecordingSplitsPrompt;
77
85
  }
78
86
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,qBAAa,cAAc;IACzB;;OAEG;IACH,WAAW,IAAI,gBAAgB,EAAE;IA6EjC;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAwCvE;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8B/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA+B/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAkC/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA+BpC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAsChC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuC7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmChC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA+CnC;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAoChC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,qBAAa,cAAc;IACzB;;OAEG;IACH,WAAW,IAAI,gBAAgB,EAAE;IAuGjC;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IA8CvE;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgC/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA+B/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqC/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAiCpC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoC7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyChC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0C7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqChC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiDnC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuC/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsC5B;;OAEG;IACH,OAAO,CAAC,2BAA2B;CA6CpC"}
@@ -66,6 +66,28 @@ export class PromptRegistry {
66
66
  description: "Assess the workspace state and route to the right workflow — use this when you first connect or don't know where to start",
67
67
  arguments: [],
68
68
  },
69
+ {
70
+ name: "log-a-session",
71
+ description: "Log a studio session — guided capture of who was there, what work was being made, and what happened",
72
+ arguments: [
73
+ {
74
+ name: "work_id",
75
+ description: "Optional work this session was for — pass to skip the discovery question",
76
+ required: false,
77
+ },
78
+ ],
79
+ },
80
+ {
81
+ name: "set-recording-splits",
82
+ description: "Set master ownership splits on a recording — guided propose-and-confirm flow with verify gate",
83
+ arguments: [
84
+ {
85
+ name: "recording_id",
86
+ description: "Optional recording to set splits on — pass to skip the discovery question",
87
+ required: false,
88
+ },
89
+ ],
90
+ },
69
91
  ];
70
92
  }
71
93
  /**
@@ -95,6 +117,10 @@ export class PromptRegistry {
95
117
  return this.getPrepareForSyncPrompt();
96
118
  case "workspace-autopilot":
97
119
  return this.getWorkspaceAutopilotPrompt();
120
+ case "log-a-session":
121
+ return this.getLogASessionPrompt(args?.work_id);
122
+ case "set-recording-splits":
123
+ return this.getSetRecordingSplitsPrompt(args?.recording_id);
98
124
  default:
99
125
  throw new Error(`Prompt not found: ${name}`);
100
126
  }
@@ -111,6 +137,8 @@ export class PromptRegistry {
111
137
  type: "text",
112
138
  text: `Please analyze my music catalog and provide a comprehensive report.
113
139
 
140
+ If you're unsure where to start, read pica://docs/agent-guide for the workflow taxonomy.
141
+
114
142
  Use the following tools to gather data:
115
143
  1. pica_catalog_stats - Get overall statistics
116
144
  2. pica_works_query - Review works data
@@ -176,6 +204,9 @@ Be thorough but conservative - only flag items that have a strong likelihood of
176
204
  type: "text",
177
205
  text: `Please identify works and people that could benefit from metadata enrichment.
178
206
 
207
+ Pre-flight: read pica://schemas/enrichment-resolve-required for the canonical resolve/propose shape (target_type, target_id, sources).
208
+ If you're unsure where to start, read pica://docs/agent-guide for the workflow taxonomy.
209
+
179
210
  Use these tools:
180
211
  1. pica_works_query - Get all works
181
212
  2. pica_people_query - Get all people
@@ -214,7 +245,7 @@ ADR-193 — before asking the user to paste facts, check your other connected MC
214
245
 
215
246
  Use these tools:
216
247
  1. pica_works_query with verified: false - Get unverified works
217
- 2. pica_recordings_by_work - Check if works have recordings
248
+ 2. pica_recordings_query with work_id - Check if works have recordings
218
249
  3. pica_people_query - Check for associated people/credits
219
250
 
220
251
  For each unverified work, assess:
@@ -246,6 +277,8 @@ Provide specific recommendations for each category, including what's needed to m
246
277
  type: "text",
247
278
  text: `Please assess the health of my music catalog using the PICA Score.
248
279
 
280
+ If you're unsure where to start, read pica://docs/agent-guide for the workflow taxonomy.
281
+
249
282
  Use these tools:
250
283
  1. pica_works_inspect({ sections: ["score"] }) - Get the PICA Score with pillar breakdown
251
284
  2. pica_catalog_stats - Get raw catalog statistics for additional context
@@ -279,6 +312,8 @@ Provide:
279
312
  type: "text",
280
313
  text: `Please audit the credits across my music catalog to find gaps and issues.
281
314
 
315
+ Pre-flight: if you propose adding a missing credit, read pica://schemas/work-credits-required for the canonical credit shape (role, splits totaling 100%).
316
+
282
317
  Use these tools:
283
318
  1. pica_works_query - Get all works
284
319
  2. pica_credits_list - Check credits for each work (sample at least 20 works, prioritizing recent ones)
@@ -315,6 +350,9 @@ Report:
315
350
  type: "text",
316
351
  text: `I just connected to PICA. Help me get started with my music catalog.
317
352
 
353
+ Pre-flight: read pica://schemas/work-required, pica://schemas/work-credits-required, and pica://schemas/audio-upload-required for the canonical create-work, add-credit, and upload-audio shapes.
354
+ If you're unsure where to start, read pica://docs/agent-guide for the workflow taxonomy.
355
+
318
356
  First, read the workspace://context resource to understand my current catalog state (is it empty or do I already have works?).
319
357
 
320
358
  If the catalog is empty, welcome me and explain that I can get my music into PICA however I like:
@@ -358,6 +396,9 @@ Important: I can always log in at withpica.com to see, verify, and manage everyt
358
396
  type: "text",
359
397
  text: `Help me close the loop on a work — find what's missing and offer to fix each gap.
360
398
 
399
+ Pre-flight: per gap class, read the relevant schema before writing — pica://schemas/work-credits-required (credits/splits), pica://schemas/audio-upload-required (master audio), pica://schemas/enrichment-resolve-required (ISWC/ISRC via cascade).
400
+ If you're unsure where to start, read pica://docs/agent-guide for the workflow taxonomy.
401
+
361
402
  ${workInstruction}
362
403
 
363
404
  For the work, check every aspect of completeness:
@@ -395,6 +436,8 @@ Keep it conversational — don't list all gaps at once. Start with the most impo
395
436
  type: "text",
396
437
  text: `Help me check which of my works are registered and which still need registration.
397
438
 
439
+ Pre-flight: read pica://schemas/enrichment-resolve-required (for resolving missing ISWCs via the cascade) and pica://schemas/export-required (for the CWR export shape) before writing.
440
+
398
441
  Steps:
399
442
  1. pica_works_query — list works, then use pica_works_inspect with sections: ["registration"] to check registration status across PROs (PRS, MCPS, PPL, MLC)
400
443
  2. For works that aren't registered, use pica_works_inspect with sections: ["registration", "completeness"] on a sample to understand what's blocking registration
@@ -432,6 +475,8 @@ Focus on practical next steps, not just reporting.`,
432
475
  type: "text",
433
476
  text: `You've just connected to a PICA workspace. Assess its current state and guide me to the most valuable next action.
434
477
 
478
+ If you're unsure where to start, read pica://docs/agent-guide for the workflow taxonomy.
479
+
435
480
  Step 1 — Orient:
436
481
  Read the workspace://context resource to get a snapshot of the catalog: org info, catalog size, health score, and top priorities.
437
482
 
@@ -481,6 +526,8 @@ Important: Don't run all workflows at once. Pick the single most valuable action
481
526
  type: "text",
482
527
  text: `Help me get my catalog ready for sync licensing — make sure my works are discoverable and attractive to music supervisors.
483
528
 
529
+ Pre-flight: if you propose enriching from Spotify/MusicBrainz to fill genre/mood/identifier gaps, read pica://schemas/enrichment-resolve-required for the canonical resolve shape.
530
+
484
531
  Steps:
485
532
  1. pica_catalog_stats — get an overview of the catalog
486
533
  2. pica_works_query — sample works to check what's missing for sync readiness
@@ -508,5 +555,91 @@ The goal is making works findable by mood, BPM, key, and energy — that's what
508
555
  ],
509
556
  };
510
557
  }
558
+ /**
559
+ * Log a session — guided studio session capture
560
+ */
561
+ getLogASessionPrompt(workId) {
562
+ const workInstruction = workId
563
+ ? `Log this session against work ${workId}.`
564
+ : `Ask me which work this session was for. If I'm not sure or it doesn't have one yet, that's fine — work_id is optional.`;
565
+ return {
566
+ messages: [
567
+ {
568
+ role: "user",
569
+ content: {
570
+ type: "text",
571
+ text: `Help me log a studio session.
572
+
573
+ Pre-flight: read pica://schemas/session-required for the canonical session shape (title, start_time, end_time required; session_type_id from pica_sessions_types; participants; optional work_id/recording_id).
574
+
575
+ ${workInstruction}
576
+
577
+ Walk me through it conversationally — don't dump a form. Capture each piece in turn:
578
+
579
+ 1. What was the session for? — title and a short description (e.g. "vocal recording for track 3")
580
+ 2. What kind of session? — call pica_sessions_types and let me pick (recording, mixing, mastering, writing, production, rehearsal). Pass the chosen type's UUID as session_type_id.
581
+ 3. When was it? — start_time and end_time as ISO 8601. If I give you "yesterday afternoon", confirm a specific time. Default timezone Europe/London unless I say otherwise. If it was a full-day affair, set is_all_day: true.
582
+ 4. Where? — studio name in location, or a virtual link in location_url for remote sessions.
583
+ 5. Who was there? — collect participants as { personId?, userId?, role? }. If I name someone you don't recognise, offer to look them up via pica_people_query first; if they're not on PICA yet, offer pica_collaborators_invite to bring them in.
584
+ 6. What happened? — capture as notes. This is the bit I'll thank you for later.
585
+
586
+ Then call pica_sessions_create with the captured fields. Confirm what was logged and offer the natural next step:
587
+ - "Want me to attach a multimedia file from this session?" (pica_multimedia_create)
588
+ - "Want me to set master ownership splits for any new recording from this session?" (pica_recording_splits_create)
589
+ - "Want me to log another session?"
590
+
591
+ If I skip something, that's fine — only title, start_time, and end_time are strictly required. Don't badger me for the rest.`,
592
+ },
593
+ },
594
+ ],
595
+ };
596
+ }
597
+ /**
598
+ * Set recording splits — guided master ownership split assignment with verify gate
599
+ */
600
+ getSetRecordingSplitsPrompt(recordingId) {
601
+ const recordingInstruction = recordingId
602
+ ? `Work on recording ${recordingId}.`
603
+ : `Ask me which recording to set splits on. If I'm not sure of the ID, use pica_recordings_query to list recent ones and let me pick.`;
604
+ return {
605
+ messages: [
606
+ {
607
+ role: "user",
608
+ content: {
609
+ type: "text",
610
+ text: `Help me set master ownership splits on a recording — these are master-side royalty shares (distinct from writer splits, which are credits on a work).
611
+
612
+ Pre-flight: read pica://schemas/recording-splits-required for the canonical split shape (recording_id, person_id, split_percentage, split_type). Splits must total 100%.
613
+
614
+ ${recordingInstruction}
615
+
616
+ Walk me through it carefully — splits flow into payments, so we want to get this right:
617
+
618
+ 1. Show current state — call pica_recording_splits_list for the recording. If splits already exist, summarise them (who owns what %, total). Ask whether I want to add to them, replace them, or just verify what's there.
619
+
620
+ 2. Capture the proposed splits — for each split:
621
+ - Who owns this share? (person_id from pica_people_query, or offer pica_collaborators_invite if they're not on PICA yet)
622
+ - What percentage? (must total 100% across all splits)
623
+ - What kind? (split_type — typical values: artist, producer, label, featured)
624
+
625
+ 3. Pre-commit dry-run — call pica_recording_splits_create with dry_run: true for each proposed split (per ADR-199). Show me the would-affect preview so I can confirm before persisting. Sum the percentages out loud. If they don't total 100%, stop and ask me to adjust.
626
+
627
+ 4. Confirm explicitly — say something like "I'm about to set [N] splits totalling 100% on this recording. Reply 'yes' to commit, or tell me what to change." Wait for my confirmation. Don't write without it.
628
+
629
+ 5. Commit — call pica_recording_splits_create (dry_run omitted) for each split. Report each one back as it lands.
630
+
631
+ 6. Verify — for each newly-created split, call pica_recording_splits_verify with the split_id to mark it agreed-upon. Report the verified state.
632
+
633
+ 7. Offer the natural next step:
634
+ - "Want me to generate a split sheet PDF for signing?" (pica_split_sheet_generate)
635
+ - "Want me to send the split sheet to the parties?" (pica_split_sheet_send)
636
+ - "Want me to set splits on another recording?"
637
+
638
+ If at any point the totals are off or I waver, stop and re-confirm. Splits are not the place to be ambitious — accuracy beats throughput.`,
639
+ },
640
+ },
641
+ ],
642
+ };
643
+ }
511
644
  }
512
645
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,6 @@
10
10
  * Edits to this file are linted by scripts/lint-agent-guide.ts: every
11
11
  * `pica_*` token must resolve to a real tool in ToolRegistry.
12
12
  */
13
- export declare const AGENT_GUIDE_AUTHENTICATED = "# pica \u2014 agent guide\n\npica manages a music catalog: works (compositions), recordings (masters),\npeople (writers, performers, publishers), credits, agreements, exports.\nmulti-tenant per organisation; every write is org-scoped automatically.\n\nyou are signed in. ~227 tools are available. five core workflows below\ncover most of the surface; for anything not listed, fall back to\n`pica_discover` (mode: list_categories \u2192 list_tools) \u2192 `pica_tool_details`.\n\n## top workflows\n\n### register a new work\n1. `pica_works_create` \u2014 title required; iswc settable inline.\n2. `pica_credits_update` \u2014 batch; attach writer/composer credits.\n writer_split_percentage values must sum to 100 across all writer rows.\n see `pica://schemas/work-required` and `pica://schemas/work-credits-required`.\n\n### add a recording to an existing work\n- `pica_recordings_create` \u2014 title + artist_name + version_type required\n (version_type defaults to `master`). isrc and duration_ms are inline.\n- see `pica://schemas/recording-required`.\n\n### add audio to a recording\n1. `pica_audio_presigned_upload` \u2014 returns a signed url + token.\n2. uploader (browser, curl, sdk) PUTs the file to that url.\n3. `pica_audio_complete_upload` \u2014 registers the upload in the catalog.\n4. (optional) `pica_audio_analyze` \u2014 async; extracts bpm, key, mood, and\n transcribes lyrics via whisper.\n5. `pica_audio_inspect` (sections: [\"analysis\", \"status\"]) \u2014 poll for\n analysis results when you called step 4.\n\n### add recording credits\n- `pica_recording_credits_update` \u2014 batch. role enum is DISTINCT from\n work credits (MainArtist / FeaturedArtist / Producer / Engineer / etc.).\n- person_id is OPTIONAL \u2014 credits can carry just credited_name when the\n person isn't in the catalog yet.\n- see `pica://schemas/recording-credits-required`.\n\n### enrich existing metadata\n1. `pica_resolve_work` / `pica_resolve_person` / `pica_resolve_recording` \u2014\n tier A identifier matches apply directly; tier B fuzzy matches queue\n as proposals.\n2. `pica_enrichment_proposals_list` \u2014 view pending proposals.\n3. `pica_enrichment_proposal_apply` \u2014 commit a proposal you've reviewed.\n\n## common gotchas\n\n- **duration units differ.** `works.duration_seconds` (integer seconds);\n `recordings.duration_ms` (integer milliseconds);\n `audio_files.duration_seconds` (seconds again).\n- **no standalone identifier-assign tool.** iswc on works, isrc on\n recordings, ipi/pro/ppl/mcps numbers on people \u2014 all inline at create\n or update. there is no separate identifier tool family; don't search\n for one.\n- **two write surfaces for work collaborators.** `pica_credits_update`\n is canonical (writer/publisher splits + attestation). `work_collaborators`\n is a simpler legacy surface still used by some flows.\n- **recording credits are a separate surface** with a different role\n enum. use `pica_recording_credits_update`, not `pica_credits_update`.\n- **people identifier sprawl.** inline columns: `cae_ipi_number`,\n `ipn_number`, `prs_number`, `ppl_number`, `pro_member_number`,\n `mcps_member_number`. satellite (settable through the same create/update\n call): `isni`, `musicbrainz_id`, `wikidata_id`, `discogs_artist_id`,\n `imdb_id`, `viaf_id`, `deezer_artist_id`. treat as one inline surface.\n- **audio analysis is async + explicit.** `pica_audio_complete_upload`\n does NOT auto-trigger analysis. call `pica_audio_analyze` and poll.\n- **lyrics from analysis don't auto-write back to `works.lyrics`.**\n whisper transcripts land on the analysis row; copy is a separate step.\n- **org scoping + duplicate prevention.** every write is scoped to the\n caller's organisation. iswc and isrc duplicates are blocked at write.\n\n## schema resources (pre-flight before each workflow)\n\n- `pica://schemas/work-required` \u2014 backs `pica_works_create`.\n- `pica://schemas/recording-required` \u2014 backs `pica_recordings_create`.\n- `pica://schemas/work-credits-required` \u2014 backs `pica_credits_update`.\n- `pica://schemas/recording-credits-required` \u2014 backs `pica_recording_credits_update`.\n- `pica://schemas/person-required` \u2014 backs `pica_people_create`.\n\neach schema returns a json contract: required fields, recommended fields,\nCHECK enum values, companion-call orchestration, and an example payload.\n";
14
- export declare const AGENT_GUIDE_LOBBY = "# pica \u2014 sign in to begin\n\nyou are in lobby mode. three tools are available; the rest unlock after\nsign-in.\n\n## lobby tools\n- `pica_signup_start` \u2014 create a new organisation and get a magic link\n for first-time setup.\n- `pica_sign_in` \u2014 request a magic link for an existing user.\n- `pica_sign_out` \u2014 drop session.\n\n## to sign in\n1. ask the user for an email address.\n2. call `pica_signup_start` (new user) or `pica_sign_in` (returning).\n3. user clicks the magic link. on the next request, the catalog tool\n surface unlocks automatically \u2014 no config to refresh.\n\n## what unlocks after sign-in\n~227 tools across catalog (works, recordings, people, credits),\nenrichment, exports, agreements, multimedia, analytics, and audio. five\nrequired-fields schema resources at `pica://schemas/<workflow>-required`.\nthe full agent-guide replaces this lobby content.\n";
13
+ export declare const AGENT_GUIDE_AUTHENTICATED = "# pica \u2014 agent guide\n\npica manages a music catalog: works (compositions), recordings (masters),\npeople (writers, performers, publishers), credits, agreements, exports.\nmulti-tenant per organisation; every write is org-scoped automatically.\n\nyou are signed in. ~232 tools are available. fourteen core workflows below\ncover most of the surface; for anything not listed, fall back to\n`pica_discover` (mode: list_categories \u2192 list_tools) \u2192 `pica_tool_details`.\n\n## top workflows\n\n### register a new work\n1. `pica_works_create` \u2014 title required; iswc settable inline.\n2. `pica_credits_update` \u2014 batch; attach writer/composer credits.\n writer_split_percentage values must sum to 100 across all writer rows.\n see `pica://schemas/work-required` and `pica://schemas/work-credits-required`.\n\n### add a recording to an existing work\n- `pica_recordings_create` \u2014 title + artist_name + version_type required\n (version_type defaults to `master`). isrc and duration_ms are inline.\n- see `pica://schemas/recording-required`.\n\n### add audio to a recording\n1. `pica_audio_presigned_upload` \u2014 returns a signed url + token.\n2. uploader (browser, curl, sdk) PUTs the file to that url.\n3. `pica_audio_complete_upload` \u2014 registers the upload in the catalog.\n4. (optional) `pica_audio_analyze` \u2014 async; extracts bpm, key, mood, and\n transcribes lyrics via whisper.\n5. `pica_audio_inspect` (sections: [\"analysis\", \"status\"]) \u2014 poll for\n analysis results when you called step 4.\n- see `pica://schemas/audio-upload-required`.\n\n### add recording credits\n- `pica_recording_credits_update` \u2014 batch. role enum is DISTINCT from\n work credits (MainArtist / FeaturedArtist / Producer / Engineer / etc.).\n- person_id is OPTIONAL \u2014 credits can carry just credited_name when the\n person isn't in the catalog yet.\n- see `pica://schemas/recording-credits-required`.\n\n### enrich existing metadata\n1. `pica_resolve_work` / `pica_resolve_person` / `pica_resolve_recording` \u2014\n tier A identifier matches apply directly; tier B fuzzy matches queue\n as proposals.\n2. `pica_enrichment_proposals_list` \u2014 view pending proposals.\n3. `pica_enrichment_proposal_apply` \u2014 commit a proposal you've reviewed.\n `pica_enrichment_proposal_reject` \u2014 dismiss with content-hash suppression.\n- see `pica://schemas/enrichment-resolve-required`.\n\n### create an agreement\n1. `pica_agreements_create` \u2014 title + agreement_type + other_party_name\n required. prefer counterparty_org_id (FK) over free-text other_party_name.\n2. `pica_agreements_link_work` \u2014 attach works (optional royalty_split per work).\n3. `pica_agreement_templates_render` \u2014 template-driven alternative.\n- see `pica://schemas/agreement-required`.\n\n### add multimedia\n- `pica_multimedia_create` \u2014 title + content_type required.\n- `pica_multimedia_link_youtube` \u2014 YouTube videos (auto-enriched).\n- `pica_multimedia_import_url` \u2014 external image / video URL (downloads\n into PICA storage).\n- `pica_multimedia_link_work` \u2014 attach to a work (relationship_type required).\n- see `pica://schemas/multimedia-required`.\n\n### log a studio session\n1. (optional) `pica_sessions_types` \u2014 pre-flight to discover valid\n `session_type_id` values for this org. Lookup table; org-scoped.\n2. `pica_sessions_create` \u2014 title + start_time + end_time (ISO 8601).\n session_type_id, location, work_id, recording_id, participants are\n all optional inline fields.\n3. `pica_sessions_get` / `pica_sessions_list` \u2014 read-back / browse.\n- the `status` enum (scheduled / in_progress / completed / cancelled) is\n documented but NOT enforced by a DB CHECK \u2014 values may evolve.\n- see `pica://schemas/session-required`.\n\n### generate a split sheet (publishing royalties on a work)\n1. **pre-condition:** writer credits on the work must already total 100%\n via `pica_credits_update`. `pica_split_sheet_generate` returns 400\n otherwise.\n2. `pica_split_sheet_generate` \u2014 work_id only; snapshots current splits.\n3. `pica_split_sheet_send` \u2014 notify each credited writer for signature\n via in-app + Telegram + email. Non-PICA-user writers get a\n collaboration invite email instead. Per-writer soft-fails.\n4. `pica_split_sheet_get` / `pica_split_sheet_list` \u2014 read-back.\n- see `pica://schemas/split-sheet-required`.\n\n### assign master ownership splits (recording rights)\n- DISTINCT from publishing splits above. Recording splits live on\n `recording_splits`, not `work_credits`. Drives master royalty payouts\n + downstream credit gating.\n1. `pica_recording_splits_create` \u2014 recording_id + split_type\n (master / mechanical / performance / sync) + percentage required.\n role / person_id / territory / start_date / end_date optional.\n Use `dry_run: true` for a no-op preview before committing.\n ADR-200 form-confirmation gate fires on connectors that support\n `elicitation/url`.\n2. `pica_recording_splits_verify` \u2014 explicitly mark a split as agreed.\n3. `pica_recording_splits_list` \u2014 list all splits on a recording.\n- see `pica://schemas/recording-splits-required`.\n\n### assign an industry identifier (iswc / isrc / isni / ipi / etc.)\n**there is no standalone identifier-assign tool.** every identifier is\nan inline field on the entity's update tool. don't search for a\ngeneric identifier-assign verb \u2014 set the field on `pica_works_update`\n/ `pica_recordings_update` / `pica_people_update` directly.\n\n- **work identifiers** \u2192 `pica_works_update`: `iswc`, `isrc`,\n `tunecode`, `prs_work_id`, `spotify_track_uri`.\n- **recording identifiers** \u2192 `pica_recordings_update`: `isrc`,\n `isrc_source`, `musicbrainz_recording_id`, `mlc_recording_id`,\n `mlc_song_code`, `spotify_track_uri`, `spotify_track_id`,\n `youtube_video_id`, `youtube_url`, `apple_music_url`,\n `deezer_track_id`, `ppl_recording_id`.\n- **person identifiers** \u2192 `pica_people_update`: `cae_ipi_number`,\n `ipn_number`, `prs_number`, `ppl_number`, `mcps_member_number`,\n `pro_name` + `pro_member_number`, plus the satellite-routed\n identifiers below.\n\n**satellite-routed person identifiers (set them inline anyway):**\n`isni`, `musicbrainz_id`, `wikidata_id`, `discogs_artist_id`,\n`deezer_artist_id` are stored on the `person_enrichment` satellite\ntable under the hood, NOT on `people`. **don't think about that.**\nset them as inline fields on `pica_people_update` exactly like the\nnon-satellite identifiers above; the service fans out automatically.\nthe surface is uniform \u2014 satellites are an implementation detail.\n\nfield-name notes \u2014 these names are surface-precise; the route's\nallow-list rejects the abbreviated forms:\n- `cae_ipi_number` (NOT `cae_ipi`)\n- `ipn_number` (NOT `ipn`)\n- `pro_member_number` (the generic non-PRO/PPL/MCPS variant) is paired\n with `pro_name` to specify which PRO.\n\n**examples:**\n- `pica_works_update { id: \"<uuid>\", iswc: \"T-123.456.789-0\" }`\n- `pica_people_update { id: \"<uuid>\", cae_ipi_number: \"00000000001\",\n isni: \"0000000123456789\" }`\n\n### export the catalog\n- one of: `pica_export_catalog_csv` (broadest, ungated) /\n `pica_export_song_registration` (CWR for PRO/CMO) /\n `pica_export_industry_ready` (publisher / label / sync) /\n `pica_export_catalog_asset_report` (CAR \u2014 finance / insurance / diligence) /\n `pica_export_ai_consent` (AI-consent matrix).\n- see `pica://schemas/export-required` for which export matches which destination.\n\n### claim a discovery\n1. `pica_discoveries_query` \u2014 list pending; row carries\n `type: 'credit' | 'custody' | 'artist'`.\n2. typed claim: `pica_claim_credit` / `pica_claim_custody` /\n `pica_claim_artist`. or `pica_discoveries_review` for generic accept/reject.\n- see `pica://schemas/claim-required`.\n\n## reading the catalog\n\nwrite-flows above assume you already know what to write. these read-\npatterns help you find the right entity / gap / duplicate first.\n\n### find duplicates and merge them\n1. `pica_find_duplicates` \u2014 `entity_type: \"works\" | \"people\"`. returns\n groups + suggested winners.\n2. `pica_merge_duplicates` \u2014 `entity_type` accepts both forms; the\n canonical plural (`\"works\" | \"people\"`) matches `pica_find_duplicates`\n and is preferred. legacy singular (`\"work\" | \"person\"`) still works\n for backwards compatibility. max 25 loser_ids per call. requires\n admin scope.\n- if you need to merge but don't have admin scope, ping a workspace\n owner \u2014 there is no agent-side workaround.\n\n### audit catalog completeness\n1. `pica_dashboard_briefing` \u2014 high-level state: counts of\n needs_attention works, recent activity, unresolved discoveries.\n start here, not at `*_query`.\n2. `pica_dashboard_pulse` \u2014 trend / velocity companion.\n3. drill into specifics from the briefing's pointers \u2014 usually a\n `pica_*_query` filtered by health, then `pica_*_inspect` per row.\n\n### find gaps and fill them\n1. `pica_works_query { health_filter: \"needs_attention\" | \"low_completeness\" }`\n \u2014 under-used. surfaces works missing credits / iswc / metadata.\n parallel filters exist on `pica_recordings_query` /\n `pica_people_query` (`pica_people_query` is full-text only \u2014 no\n typed health_filter yet).\n2. `pica_works_inspect { id, sections: [\"health\", \"completeness\", \"enrichment\"] }`\n \u2014 request only the sections you need. sections=[] (omit) returns\n everything which is noisy.\n3. if the gap is identifier-shaped (missing ISWC / ISRC / ISNI /\n MusicBrainz id) \u2014 `pica_resolve_work` / `_recording` / `_person`\n fans the cascade. tier B fuzzy matches queue as proposals \u2014 drain\n via `pica_enrichment_proposals_list` \u2192 `_apply` / `_reject`.\n\n### look up a person by industry identifier\n- `pica_people_query` accepts a free-text `query` field that matches\n name, email, OR identifier (IPI / ISNI / etc.). there is NO typed\n filter (`pica_people_query { isni: \"...\" }` does not work) \u2014 use\n the `query` string.\n- if no match, fall back to `pica_search_all` for a cross-entity scan.\n- if still no match, the person isn't in the catalog yet \u2014\n `pica_people_create` (set the identifier inline; see the\n identifier-assign section above) \u2192 `pica_resolve_person` to fan\n enrichment across ISNI + MusicBrainz.\n\n## common gotchas\n\n- **duration units differ.** `works.duration_seconds` (integer seconds);\n `recordings.duration_ms` (integer milliseconds);\n `audio_files.duration_seconds` (seconds again).\n- **no standalone identifier-assign tool.** every identifier (ISWC,\n ISRC, ISNI, CAE/IPI, MusicBrainz id, etc.) is an inline field on the\n entity's update tool \u2014 see the \"assign an industry identifier\"\n section above for the surface-precise field names.\n- **two write surfaces for collaborators.** `pica_credits_update` is\n canonical for work splits; `pica_recording_credits_update` is the\n recording-side variant with a different role enum (MainArtist /\n FeaturedArtist / Producer / etc.). don't cross them.\n- **people identifiers \u2014 treat as one inline surface.** `pica_people_update`\n accepts every identifier as an inline field; some route to the\n `person_enrichment` satellite under the hood (see the identifier\n section above) \u2014 the surface stays uniform.\n- **audio analysis is async + explicit.** `pica_audio_complete_upload`\n does NOT auto-trigger analysis. call `pica_audio_analyze` and poll.\n- **lyrics from analysis don't auto-write back to `works.lyrics`.**\n whisper transcripts land on the analysis row; copy is a separate step.\n- **org scoping + duplicate prevention.** writes are org-scoped; iswc\n and isrc duplicates are blocked at write.\n\n## schema resources (pre-flight before each workflow)\n\n- `pica://schemas/work-required` \u2014 backs `pica_works_create`.\n- `pica://schemas/recording-required` \u2014 backs `pica_recordings_create`.\n- `pica://schemas/work-credits-required` \u2014 backs `pica_credits_update`.\n- `pica://schemas/recording-credits-required` \u2014 backs `pica_recording_credits_update`.\n- `pica://schemas/person-required` \u2014 backs `pica_people_create`.\n- `pica://schemas/audio-upload-required` \u2014 3-step audio chain.\n- `pica://schemas/enrichment-resolve-required` \u2014 resolve \u2192 proposals chain.\n- `pica://schemas/agreement-required` \u2014 backs `pica_agreements_create`.\n- `pica://schemas/multimedia-required` \u2014 backs `pica_multimedia_create`.\n- `pica://schemas/export-required` \u2014 five export destinations.\n- `pica://schemas/claim-required` \u2014 three discovery claim verbs.\n- `pica://schemas/session-required` \u2014 backs `pica_sessions_create`.\n- `pica://schemas/split-sheet-required` \u2014 backs `pica_split_sheet_generate` (publishing splits on works).\n- `pica://schemas/recording-splits-required` \u2014 backs `pica_recording_splits_create` (master ownership splits on recordings).\n\neach schema returns a json contract: required fields, recommended fields,\nCHECK enum values, companion-call orchestration, and an example payload.\n";
14
+ export declare const AGENT_GUIDE_LOBBY = "# pica \u2014 sign in to begin\n\nyou are in lobby mode. three tools are available; the rest unlock after\nsign-in.\n\n## lobby tools\n- `pica_signup_start` \u2014 create a new organisation and get a magic link\n for first-time setup.\n- `pica_sign_in` \u2014 request a magic link for an existing user.\n- `pica_sign_out` \u2014 drop session.\n\n## to sign in\n1. ask the user for an email address.\n2. call `pica_signup_start` (new user) or `pica_sign_in` (returning).\n3. user clicks the magic link. on the next request, the catalog tool\n surface unlocks automatically \u2014 no config to refresh.\n\n## what unlocks after sign-in\n~232 tools across catalog (works, recordings, people, credits, sessions,\nsplits), enrichment, exports, agreements, multimedia, analytics, and\naudio. fourteen required-fields schema resources at\n`pica://schemas/<workflow>-required`.\nthe full agent-guide replaces this lobby content.\n";
15
15
  //# sourceMappingURL=agent-guide.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-guide.d.ts","sourceRoot":"","sources":["../../src/resources/agent-guide.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,yBAAyB,2zIAkFrC,CAAC;AAEF,eAAO,MAAM,iBAAiB,24BAsB7B,CAAC"}
1
+ {"version":3,"file":"agent-guide.d.ts","sourceRoot":"","sources":["../../src/resources/agent-guide.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,yBAAyB,88ZAqPrC,CAAC;AAEF,eAAO,MAAM,iBAAiB,k6BAuB7B,CAAC"}