@sentry/junior 0.96.0 → 0.97.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 (135) hide show
  1. package/dist/{agent-hooks-5URSMY3O.js → agent-hooks-XSUIVRQS.js} +8 -6
  2. package/dist/{reporting → api}/conversations/activity.d.ts +1 -1
  3. package/dist/api/conversations/detail-projection.d.ts +10 -0
  4. package/dist/api/conversations/detail.d.ts +3 -0
  5. package/dist/api/conversations/detail.query.d.ts +3 -0
  6. package/dist/api/conversations/list.d.ts +3 -0
  7. package/dist/api/conversations/list.query.d.ts +94 -0
  8. package/dist/api/conversations/projection.d.ts +14 -0
  9. package/dist/api/conversations/schema.d.ts +683 -0
  10. package/dist/{reporting → api}/conversations/shared.d.ts +1 -5
  11. package/dist/api/conversations/stats.d.ts +3 -0
  12. package/dist/api/conversations/stats.query.d.ts +3 -0
  13. package/dist/api/conversations/subagent.d.ts +3 -0
  14. package/dist/{reporting → api}/conversations/transcript.d.ts +4 -4
  15. package/dist/api/people/list.d.ts +1 -2
  16. package/dist/api/people/list.query.d.ts +3 -4
  17. package/dist/api/people/profile.d.ts +1 -2
  18. package/dist/api/people/profile.query.d.ts +3 -4
  19. package/dist/api/people/schema.d.ts +193 -0
  20. package/dist/api/people/shared.d.ts +31 -9
  21. package/dist/api/schema.d.ts +20 -0
  22. package/dist/api/schema.js +50 -0
  23. package/dist/api-reference.d.ts +4 -3
  24. package/dist/api.d.ts +3 -0
  25. package/dist/api.js +156 -0
  26. package/dist/app.d.ts +1 -4
  27. package/dist/app.js +100 -366
  28. package/dist/build/virtual-config.d.ts +2 -2
  29. package/dist/{catalog-runtime-MSMAYYIK.js → catalog-runtime-PFHVMHDR.js} +3 -2
  30. package/dist/chat/agent/resume.d.ts +3 -1
  31. package/dist/chat/agent/tools.d.ts +2 -1
  32. package/dist/chat/config.d.ts +1 -8
  33. package/dist/chat/conversations/history.d.ts +241 -27
  34. package/dist/chat/conversations/legacy-advisor-session.d.ts +7 -0
  35. package/dist/chat/conversations/legacy-import.d.ts +2 -2
  36. package/dist/chat/conversations/projection.d.ts +19 -3
  37. package/dist/chat/conversations/sql/legacy-history-import.d.ts +1 -1
  38. package/dist/chat/conversations/sql/store.d.ts +15 -9
  39. package/dist/chat/conversations/store.d.ts +9 -4
  40. package/dist/chat/model-profile.d.ts +14 -0
  41. package/dist/chat/pi/transcript.d.ts +5 -3
  42. package/dist/chat/resource-events/store.d.ts +2 -2
  43. package/dist/chat/services/context-compaction.d.ts +15 -0
  44. package/dist/chat/services/turn-result.d.ts +1 -0
  45. package/dist/chat/services/turn-session-record.d.ts +6 -6
  46. package/dist/chat/state/turn-session.d.ts +16 -5
  47. package/dist/chat/task-execution/store.d.ts +2 -2
  48. package/dist/chat/tools/handoff/tool.d.ts +45 -0
  49. package/dist/chat/tools/types.d.ts +7 -2
  50. package/dist/chat/usage.d.ts +25 -25
  51. package/dist/{chunk-RITD7E5L.js → chunk-35BNLDOJ.js} +338 -577
  52. package/dist/{chunk-PMNN6ST4.js → chunk-3ECW2K2O.js} +7 -2
  53. package/dist/{chunk-5C6XTTFI.js → chunk-3F4OPKGF.js} +89 -55
  54. package/dist/chunk-3V7OFJZC.js +264 -0
  55. package/dist/chunk-4ZNGQH7C.js +25 -0
  56. package/dist/{chunk-S5KZ5LPG.js → chunk-5HLDPVYS.js} +14 -447
  57. package/dist/{chunk-DZENG5ML.js → chunk-6U26PYI5.js} +24 -14
  58. package/dist/chunk-AUUCAFDE.js +546 -0
  59. package/dist/{chunk-6APU57E6.js → chunk-B3IT5END.js} +41 -260
  60. package/dist/chunk-CEA3A3UA.js +86 -0
  61. package/dist/{chunk-YDT7SNCN.js → chunk-D5KZYS4T.js} +1 -1
  62. package/dist/{chunk-YDVEH3SB.js → chunk-EEZCY5WX.js} +78 -28
  63. package/dist/{chunk-2NAZZPPS.js → chunk-EOWXRY5E.js} +1 -1
  64. package/dist/{chunk-GQ3GK22G.js → chunk-FBHZJFHI.js} +2 -2
  65. package/dist/{chunk-CZEX6KIQ.js → chunk-G3E7SCME.js} +0 -23
  66. package/dist/chunk-GUAP3H7O.js +319 -0
  67. package/dist/{chunk-BYZWPRJA.js → chunk-H66UCBPW.js} +6 -4
  68. package/dist/{chunk-L7CDEIVJ.js → chunk-LMJPRYHP.js} +4 -2
  69. package/dist/chunk-LUAE4MGW.js +199 -0
  70. package/dist/{chunk-GY34VGP5.js → chunk-LVA4I4H7.js} +3 -1
  71. package/dist/chunk-LVUKF5CE.js +63 -0
  72. package/dist/{chunk-AAZXTVJT.js → chunk-NG2AV7IB.js} +2 -72
  73. package/dist/chunk-ON6YKIQ7.js +260 -0
  74. package/dist/chunk-PDO5BLNM.js +22 -0
  75. package/dist/chunk-QNVHH5PU.js +20 -0
  76. package/dist/{chunk-P3YFQLEN.js → chunk-T533JLM3.js} +8 -10
  77. package/dist/chunk-UAMKJPDF.js +11 -0
  78. package/dist/chunk-VFH4ZKZT.js +66 -0
  79. package/dist/{chunk-UKHVMPX5.js → chunk-WGXMTFNU.js} +15 -17
  80. package/dist/{chunk-MNTINMWR.js → chunk-WJOSZOON.js} +184 -300
  81. package/dist/chunk-WTYEKPXU.js +451 -0
  82. package/dist/{chunk-IYM2SIVG.js → chunk-XIRPQQVE.js} +605 -363
  83. package/dist/cli/chat.js +24 -21
  84. package/dist/cli/check.js +4 -3
  85. package/dist/cli/init.js +12 -0
  86. package/dist/cli/plugins.js +12 -9
  87. package/dist/cli/snapshot-warmup.js +8 -6
  88. package/dist/cli/upgrade.js +265 -137
  89. package/dist/db/db.d.ts +4 -0
  90. package/dist/db/schema/conversations.d.ts +128 -0
  91. package/dist/db/schema.d.ts +129 -60
  92. package/dist/{db-2D6RMG67.js → db-BWXYIKFQ.js} +3 -3
  93. package/dist/detail-GA6NXWQJ.js +43 -0
  94. package/dist/discovery-RMHYSRL7.js +43 -0
  95. package/dist/handlers/health.d.ts +3 -0
  96. package/dist/instrumentation.js +1 -1
  97. package/dist/{legacy-import-VZ2MEGP7.js → legacy-import-3NQJVGQL.js} +4 -4
  98. package/dist/{api/people/list.js → list-A3WFRIYX.js} +26 -16
  99. package/dist/list-UXJI5Q5X.js +27 -0
  100. package/dist/nitro.d.ts +1 -1
  101. package/dist/nitro.js +2 -1
  102. package/dist/plugin-conversations-DDNGC35A.js +36 -0
  103. package/dist/{api/people/profile.js → profile-4RYDXWTF.js} +33 -18
  104. package/dist/reporting/plugin-conversations.d.ts +3 -0
  105. package/dist/reporting-schema.d.ts +140 -0
  106. package/dist/reporting.d.ts +12 -81
  107. package/dist/{runner-JZBRQP4F.js → runner-JALSYH2P.js} +17 -12
  108. package/dist/skills-MAZXZ2KE.js +26 -0
  109. package/dist/stats-XKXH3PTY.js +217 -0
  110. package/dist/subagent-TZ55XY37.js +48 -0
  111. package/dist/usage-schema.d.ts +25 -0
  112. package/dist/{validation-6XOOQGME.js → validation-FMEAEKCY.js} +4 -3
  113. package/migrations/0000_initial.sql +115 -0
  114. package/migrations/0001_conversation_metrics.sql +4 -0
  115. package/migrations/README.md +12 -30
  116. package/migrations/meta/0000_snapshot.json +1 -33
  117. package/migrations/meta/0001_snapshot.json +972 -0
  118. package/migrations/meta/_journal.json +9 -2
  119. package/package.json +14 -18
  120. package/dist/api/people/types.d.ts +0 -85
  121. package/dist/chat/advisor-request.d.ts +0 -4
  122. package/dist/chat/conversations/sql/migrations.d.ts +0 -22
  123. package/dist/chat/tools/advisor/session-store.d.ts +0 -9
  124. package/dist/chat/tools/advisor/tool.d.ts +0 -72
  125. package/dist/chunk-RAIB6WSG.js +0 -142
  126. package/dist/chunk-WM6KHPBQ.js +0 -48
  127. package/dist/db/schema/migrations.d.ts +0 -58
  128. package/dist/reporting/conversations/context.d.ts +0 -8
  129. package/dist/reporting/conversations/details.d.ts +0 -6
  130. package/dist/reporting/conversations/index.d.ts +0 -4
  131. package/dist/reporting/conversations/statistics.d.ts +0 -4
  132. package/dist/reporting/conversations/summaries.d.ts +0 -20
  133. package/dist/reporting/conversations/types.d.ts +0 -191
  134. package/dist/reporting/conversations.d.ts +0 -1
  135. package/dist/reporting.js +0 -1155
@@ -0,0 +1,115 @@
1
+ CREATE TABLE "junior_agent_steps" (
2
+ "conversation_id" text NOT NULL,
3
+ "seq" integer NOT NULL,
4
+ "context_epoch" integer NOT NULL,
5
+ "type" text NOT NULL,
6
+ "role" text,
7
+ "payload" jsonb NOT NULL,
8
+ "created_at" timestamp with time zone NOT NULL,
9
+ CONSTRAINT "junior_agent_steps_conversation_id_seq_pk" PRIMARY KEY("conversation_id","seq")
10
+ );
11
+ --> statement-breakpoint
12
+ CREATE TABLE "junior_conversation_messages" (
13
+ "conversation_id" text NOT NULL,
14
+ "message_id" text NOT NULL,
15
+ "role" text NOT NULL,
16
+ "author_identity_id" text,
17
+ "text" text NOT NULL,
18
+ "meta" jsonb,
19
+ "replied_at" timestamp with time zone,
20
+ "created_at" timestamp with time zone NOT NULL,
21
+ CONSTRAINT "junior_conversation_messages_conversation_id_message_id_pk" PRIMARY KEY("conversation_id","message_id")
22
+ );
23
+ --> statement-breakpoint
24
+ CREATE TABLE "junior_conversations" (
25
+ "conversation_id" text PRIMARY KEY NOT NULL,
26
+ "schema_version" integer DEFAULT 1 NOT NULL,
27
+ "source" text,
28
+ "origin_type" text,
29
+ "origin_id" text,
30
+ "origin_run_id" text,
31
+ "destination_id" text,
32
+ "destination_json" jsonb,
33
+ "actor_identity_id" text,
34
+ "creator_identity_id" text,
35
+ "credential_subject_identity_id" text,
36
+ "actor_json" jsonb,
37
+ "channel_name" text,
38
+ "title" text,
39
+ "created_at" timestamp with time zone NOT NULL,
40
+ "last_activity_at" timestamp with time zone NOT NULL,
41
+ "updated_at" timestamp with time zone NOT NULL,
42
+ "execution_updated_at" timestamp with time zone,
43
+ "execution_status" text NOT NULL,
44
+ "run_id" text,
45
+ "last_checkpoint_at" timestamp with time zone,
46
+ "last_enqueued_at" timestamp with time zone,
47
+ "parent_conversation_id" text,
48
+ "transcript_purged_at" timestamp with time zone
49
+ );
50
+ --> statement-breakpoint
51
+ CREATE TABLE "junior_destinations" (
52
+ "id" text PRIMARY KEY NOT NULL,
53
+ "provider" text NOT NULL,
54
+ "provider_tenant_id" text DEFAULT '' NOT NULL,
55
+ "provider_destination_id" text NOT NULL,
56
+ "kind" text NOT NULL,
57
+ "parent_destination_id" text,
58
+ "display_name" text,
59
+ "visibility" text DEFAULT 'unknown' NOT NULL,
60
+ "metadata_json" jsonb,
61
+ "created_at" timestamp with time zone NOT NULL,
62
+ "updated_at" timestamp with time zone NOT NULL
63
+ );
64
+ --> statement-breakpoint
65
+ CREATE TABLE "junior_identities" (
66
+ "id" text PRIMARY KEY NOT NULL,
67
+ "kind" text NOT NULL,
68
+ "provider" text NOT NULL,
69
+ "provider_tenant_id" text DEFAULT '' NOT NULL,
70
+ "provider_subject_id" text NOT NULL,
71
+ "display_name" text,
72
+ "handle" text,
73
+ "email" text,
74
+ "avatar_url" text,
75
+ "metadata_json" jsonb,
76
+ "created_at" timestamp with time zone NOT NULL,
77
+ "updated_at" timestamp with time zone NOT NULL,
78
+ "user_id" text,
79
+ "email_normalized" text,
80
+ "email_verified" boolean DEFAULT false NOT NULL
81
+ );
82
+ --> statement-breakpoint
83
+ CREATE TABLE "junior_users" (
84
+ "id" text PRIMARY KEY NOT NULL,
85
+ "primary_email" text NOT NULL,
86
+ "primary_email_normalized" text NOT NULL,
87
+ "display_name" text,
88
+ "created_at" timestamp with time zone NOT NULL,
89
+ "updated_at" timestamp with time zone NOT NULL
90
+ );
91
+ --> statement-breakpoint
92
+ ALTER TABLE "junior_agent_steps" ADD CONSTRAINT "junior_agent_steps_conversation_id_junior_conversations_conversation_id_fk" FOREIGN KEY ("conversation_id") REFERENCES "public"."junior_conversations"("conversation_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
93
+ ALTER TABLE "junior_conversation_messages" ADD CONSTRAINT "junior_conversation_messages_conversation_id_junior_conversations_conversation_id_fk" FOREIGN KEY ("conversation_id") REFERENCES "public"."junior_conversations"("conversation_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
94
+ ALTER TABLE "junior_conversation_messages" ADD CONSTRAINT "junior_conversation_messages_author_identity_id_junior_identities_id_fk" FOREIGN KEY ("author_identity_id") REFERENCES "public"."junior_identities"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
95
+ ALTER TABLE "junior_conversations" ADD CONSTRAINT "junior_conversations_destination_id_junior_destinations_id_fk" FOREIGN KEY ("destination_id") REFERENCES "public"."junior_destinations"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
96
+ ALTER TABLE "junior_conversations" ADD CONSTRAINT "junior_conversations_actor_identity_id_junior_identities_id_fk" FOREIGN KEY ("actor_identity_id") REFERENCES "public"."junior_identities"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
97
+ ALTER TABLE "junior_conversations" ADD CONSTRAINT "junior_conversations_creator_identity_id_junior_identities_id_fk" FOREIGN KEY ("creator_identity_id") REFERENCES "public"."junior_identities"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
98
+ ALTER TABLE "junior_conversations" ADD CONSTRAINT "junior_conversations_credential_subject_identity_id_junior_identities_id_fk" FOREIGN KEY ("credential_subject_identity_id") REFERENCES "public"."junior_identities"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
99
+ ALTER TABLE "junior_conversations" ADD CONSTRAINT "junior_conversations_parent_conversation_id_junior_conversations_conversation_id_fk" FOREIGN KEY ("parent_conversation_id") REFERENCES "public"."junior_conversations"("conversation_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
100
+ ALTER TABLE "junior_identities" ADD CONSTRAINT "junior_identities_user_id_junior_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."junior_users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
101
+ CREATE INDEX "junior_agent_steps_epoch_idx" ON "junior_agent_steps" USING btree ("conversation_id","context_epoch","seq");--> statement-breakpoint
102
+ CREATE INDEX "junior_conversation_messages_activity_idx" ON "junior_conversation_messages" USING btree ("conversation_id","created_at");--> statement-breakpoint
103
+ CREATE INDEX "junior_conversations_last_activity_idx" ON "junior_conversations" USING btree ("last_activity_at" DESC NULLS LAST,"conversation_id");--> statement-breakpoint
104
+ CREATE INDEX "junior_conversations_active_idx" ON "junior_conversations" USING btree (coalesce("execution_updated_at", "updated_at"),"conversation_id") WHERE "junior_conversations"."execution_status" <> 'idle';--> statement-breakpoint
105
+ CREATE INDEX "junior_conversations_destination_activity_idx" ON "junior_conversations" USING btree ("destination_id","last_activity_at" DESC NULLS LAST);--> statement-breakpoint
106
+ CREATE INDEX "junior_conversations_actor_activity_idx" ON "junior_conversations" USING btree ("actor_identity_id","last_activity_at" DESC NULLS LAST);--> statement-breakpoint
107
+ CREATE INDEX "junior_conversations_origin_idx" ON "junior_conversations" USING btree ("origin_type","origin_id","last_activity_at" DESC NULLS LAST);--> statement-breakpoint
108
+ CREATE INDEX "junior_conversations_parent_idx" ON "junior_conversations" USING btree ("parent_conversation_id");--> statement-breakpoint
109
+ CREATE UNIQUE INDEX "junior_destinations_provider_destination_uidx" ON "junior_destinations" USING btree ("provider","provider_tenant_id","provider_destination_id");--> statement-breakpoint
110
+ CREATE INDEX "junior_destinations_provider_kind_idx" ON "junior_destinations" USING btree ("provider","kind");--> statement-breakpoint
111
+ CREATE UNIQUE INDEX "junior_identities_provider_subject_uidx" ON "junior_identities" USING btree ("provider","provider_tenant_id","provider_subject_id");--> statement-breakpoint
112
+ CREATE INDEX "junior_identities_user_idx" ON "junior_identities" USING btree ("user_id");--> statement-breakpoint
113
+ CREATE INDEX "junior_identities_verified_email_idx" ON "junior_identities" USING btree ("email_normalized") WHERE "junior_identities"."email_verified" = true AND "junior_identities"."email_normalized" IS NOT NULL;--> statement-breakpoint
114
+ CREATE INDEX "junior_identities_kind_provider_idx" ON "junior_identities" USING btree ("kind","provider");--> statement-breakpoint
115
+ CREATE UNIQUE INDEX "junior_users_primary_email_normalized_uidx" ON "junior_users" USING btree ("primary_email_normalized");
@@ -0,0 +1,4 @@
1
+ ALTER TABLE "junior_conversations" ADD COLUMN "duration_ms" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
2
+ ALTER TABLE "junior_conversations" ADD COLUMN "usage_json" jsonb;--> statement-breakpoint
3
+ ALTER TABLE "junior_conversations" ADD COLUMN "execution_duration_ms" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
4
+ ALTER TABLE "junior_conversations" ADD COLUMN "execution_usage_json" jsonb;
@@ -1,32 +1,14 @@
1
1
  # SQL migrations for `@sentry/junior`
2
2
 
3
- drizzle-kit is the DDL **generator** for the shared Junior SQL schema
4
- (`src/db/schema.ts`). It is **not** the applier: `junior upgrade` applies
5
- checksum-pinned migrations under an advisory lock with the expand-only deploy
6
- contract (`specs/conversation-storage.md`). Never run `drizzle-kit migrate` or
7
- `migrate()` in any runtime path.
8
-
9
- ## Baseline (0000)
10
-
11
- `meta/0000_snapshot.json` + `meta/_journal.json` are the kit baseline for the
12
- schema that migrations `0001_conversation_core` through
13
- `0005_conversation_transcripts` already provision on live databases. They exist
14
- only so `pnpm --filter @sentry/junior db:generate` diffs future schema edits
15
- against the current state.
16
-
17
- The `0000_*.sql` baseline file is intentionally **deleted** and must never be
18
- registered with the runner — the inline `0001`–`0005` migrations in
19
- `src/chat/conversations/sql/migrations.ts` own that DDL and their recorded
20
- checksums must stay byte-stable.
21
-
22
- ## Migrations 0006 onward
23
-
24
- 1. Edit the Drizzle schema under `src/db/schema/`.
25
- 2. Run `pnpm --filter @sentry/junior db:generate`. Keep the generated
26
- `0006_*.sql` file (do not delete it like the baseline) plus its snapshot.
27
- 3. Register it as one line in `src/chat/conversations/sql/migrations.ts`:
28
- `defineMigrationFromFile("0006_<name>", "0006_<name>.sql")`.
29
-
30
- `db:generate` emitting **"No schema changes, nothing to migrate"** means the
31
- Drizzle schema and the recorded snapshot agree — run it in CI as the schema/DDL
32
- parity check.
3
+ This is a standard Drizzle migration folder. `drizzle-kit generate` owns each
4
+ SQL file, snapshot, and journal entry; `junior upgrade` applies the folder with
5
+ Drizzle ORM's migrator before any data backfills run.
6
+
7
+ 1. Edit the schema under `src/db/schema/`.
8
+ 2. Run `pnpm --filter @sentry/junior db:generate --name <migration_name>`.
9
+ 3. Commit the generated SQL file and `meta/` changes together.
10
+
11
+ The `0000_initial.sql` baseline represents the schema already deployed by the
12
+ pre-Drizzle Junior migration runner. During upgrade, existing installations
13
+ adopt that baseline once; new installations execute it normally. All later
14
+ migrations are applied by Drizzle in journal order.
@@ -1,5 +1,5 @@
1
1
  {
2
- "id": "e9dd1291-8c50-4b3c-a54a-43ddca3f7421",
2
+ "id": "dda04b3e-f251-4bec-80d0-9b5f57b72dd9",
3
3
  "prevId": "00000000-0000-0000-0000-000000000000",
4
4
  "version": "7",
5
5
  "dialect": "postgresql",
@@ -866,38 +866,6 @@
866
866
  "checkConstraints": {},
867
867
  "isRLSEnabled": false
868
868
  },
869
- "public.junior_schema_migrations": {
870
- "name": "junior_schema_migrations",
871
- "schema": "",
872
- "columns": {
873
- "id": {
874
- "name": "id",
875
- "type": "text",
876
- "primaryKey": true,
877
- "notNull": true
878
- },
879
- "checksum": {
880
- "name": "checksum",
881
- "type": "text",
882
- "primaryKey": false,
883
- "notNull": true
884
- },
885
- "applied_at": {
886
- "name": "applied_at",
887
- "type": "timestamp with time zone",
888
- "primaryKey": false,
889
- "notNull": true,
890
- "default": "now()"
891
- }
892
- },
893
- "indexes": {},
894
- "foreignKeys": {},
895
- "compositePrimaryKeys": {},
896
- "uniqueConstraints": {},
897
- "policies": {},
898
- "checkConstraints": {},
899
- "isRLSEnabled": false
900
- },
901
869
  "public.junior_users": {
902
870
  "name": "junior_users",
903
871
  "schema": "",