neondeck 1.0.0-beta.4 → 1.0.0-beta.6

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 (98) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/DEVELOPMENT.md +13 -19
  3. package/README.md +4 -3
  4. package/config/dashboard.json +8 -0
  5. package/config/dashboard.schema.json +30 -0
  6. package/dist/assets/{app-BuuvLo98.js → app-CYRclf6Z.js} +39 -8
  7. package/dist/assets/app-CYRclf6Z.js.map +1 -0
  8. package/dist/assets/{autopilot-CKgEx8yQ.js → autopilot-CuVDqfcB.js} +41 -71
  9. package/dist/assets/autopilot-CuVDqfcB.js.map +1 -0
  10. package/dist/assets/briefing-CbV2CoJn.js +2 -0
  11. package/dist/assets/briefing-ChEViTLI.js +52 -0
  12. package/dist/assets/briefing-ChEViTLI.js.map +1 -0
  13. package/dist/assets/briefings-BnBRFYeL.js +1582 -0
  14. package/dist/assets/briefings-BnBRFYeL.js.map +1 -0
  15. package/dist/assets/command-run-B06IW3oE.js +2 -0
  16. package/dist/assets/{command-run-B2TWLpLL.js → command-run-DwdX-9QT.js} +4 -4
  17. package/dist/assets/{command-run-B2TWLpLL.js.map → command-run-DwdX-9QT.js.map} +1 -1
  18. package/dist/assets/{display-assistant-CbCRBSYM.js → display-assistant-dSLjFfLP.js} +10 -7
  19. package/dist/assets/display-assistant-dSLjFfLP.js.map +1 -0
  20. package/dist/assets/fix-pr-ci-DsWwd7IG.js +2 -0
  21. package/dist/assets/{fix-pr-ci-BlUl-2ht.js → fix-pr-ci-QUEotFqt.js} +2 -2
  22. package/dist/assets/{fix-pr-ci-BlUl-2ht.js.map → fix-pr-ci-QUEotFqt.js.map} +1 -1
  23. package/dist/assets/migrations/20260711171708_conversational_briefings/migration.sql +35 -0
  24. package/dist/assets/migrations/20260711171708_conversational_briefings/snapshot.json +7458 -0
  25. package/dist/assets/{prepare-pr-worktree-DxyTygiU.js → prepare-pr-worktree-BaYwvAEG.js} +3 -3
  26. package/dist/assets/{prepare-pr-worktree-DxyTygiU.js.map → prepare-pr-worktree-BaYwvAEG.js.map} +1 -1
  27. package/dist/assets/{prepare-pr-worktree-CLzccRYh.js → prepare-pr-worktree-CgSjjz_X.js} +1 -1
  28. package/dist/assets/{push-pr-autofix-DlVjw1IN.js → push-pr-autofix-BMEzf-5-.js} +3 -3
  29. package/dist/assets/{push-pr-autofix-DlVjw1IN.js.map → push-pr-autofix-BMEzf-5-.js.map} +1 -1
  30. package/dist/assets/{push-pr-autofix-BFNSEASU.js → push-pr-autofix-jUKVyyZZ.js} +1 -1
  31. package/dist/assets/{review-pr-for-human-DcGE-7wb.js → review-pr-for-human-BNgddpGs.js} +2 -2
  32. package/dist/assets/{review-pr-for-human-DcGE-7wb.js.map → review-pr-for-human-BNgddpGs.js.map} +1 -1
  33. package/dist/assets/{review-pr-for-human-B2j8wz2L.js → review-pr-for-human-CUiMGwmG.js} +1 -1
  34. package/dist/assets/{safety-CawD9GxD.js → safety-D1Y07udx.js} +33 -614
  35. package/dist/assets/safety-D1Y07udx.js.map +1 -0
  36. package/dist/assets/{scheduled-agent-instruction-CQgogBv3.js → scheduled-agent-instruction-B8ECLDh_.js} +3 -3
  37. package/dist/assets/{scheduled-agent-instruction-CQgogBv3.js.map → scheduled-agent-instruction-B8ECLDh_.js.map} +1 -1
  38. package/dist/assets/{scheduled-agent-instruction-Dr2ebZRD.js → scheduled-agent-instruction-HvIQ2fKF.js} +1 -1
  39. package/dist/assets/{scheduler-tick-Cy26qBld.js → scheduler-tick-HqkOkEhU.js} +6 -21
  40. package/dist/assets/scheduler-tick-HqkOkEhU.js.map +1 -0
  41. package/dist/assets/scheduler-workflow-9_PuAHiC.js +21 -0
  42. package/dist/assets/scheduler-workflow-9_PuAHiC.js.map +1 -0
  43. package/dist/assets/skills/neondeck/SKILL.md +4 -2
  44. package/dist/assets/{triage-pr-event-hxUP587F.js → triage-pr-event-8-HupTb3.js} +1 -1
  45. package/dist/assets/{triage-pr-event-BlE3GKNR.js → triage-pr-event-CqE6tOYA.js} +3 -3
  46. package/dist/assets/{triage-pr-event-BlE3GKNR.js.map → triage-pr-event-CqE6tOYA.js.map} +1 -1
  47. package/dist/assets/{verify-then-push-pr-autofix-CIl5ZwZm.js → verify-then-push-pr-autofix-CKnTC8yC.js} +1 -1
  48. package/dist/assets/{verify-then-push-pr-autofix-Djy0UFUv.js → verify-then-push-pr-autofix-D5j1yWDP.js} +3 -3
  49. package/dist/assets/{verify-then-push-pr-autofix-Djy0UFUv.js.map → verify-then-push-pr-autofix-D5j1yWDP.js.map} +1 -1
  50. package/dist/config/dashboard.json +8 -0
  51. package/dist/config/dashboard.schema.json +30 -0
  52. package/dist/server.mjs +14 -13
  53. package/dist/server.mjs.map +1 -1
  54. package/dist/skills/neondeck/SKILL.md +4 -2
  55. package/package.json +6 -5
  56. package/src/agents/display-assistant.ts +5 -2
  57. package/src/modules/app-state/index.ts +0 -1
  58. package/src/modules/app-state/notifications.ts +0 -17
  59. package/src/modules/briefings/actions.ts +80 -0
  60. package/src/modules/briefings/index.ts +5 -0
  61. package/src/modules/briefings/schemas.ts +125 -0
  62. package/src/modules/briefings/service.ts +642 -0
  63. package/src/modules/briefings/snapshot.ts +291 -0
  64. package/src/modules/briefings/store.ts +644 -0
  65. package/src/modules/commands/handlers/misc.ts +9 -83
  66. package/src/modules/safety/policy-entries.ts +69 -0
  67. package/src/modules/scheduled-tasks/dispatch.ts +7 -5
  68. package/src/modules/scheduler/workflow-invocation.ts +9 -1
  69. package/src/modules/sessions/store.ts +1 -0
  70. package/src/runtime-home/app-db/index.ts +6 -5
  71. package/src/runtime-home/app-db/migrations/20260711171708_conversational_briefings/migration.sql +35 -0
  72. package/src/runtime-home/app-db/migrations/20260711171708_conversational_briefings/snapshot.json +7458 -0
  73. package/src/runtime-home/app-db/schema.ts +46 -0
  74. package/src/runtime-home/schemas.ts +42 -0
  75. package/src/server/create-app.ts +2 -0
  76. package/src/server/learning-hooks.ts +17 -0
  77. package/src/server/routes/briefings.ts +34 -0
  78. package/src/skills/neondeck/SKILL.md +4 -2
  79. package/src/workflows/briefing.ts +42 -6
  80. package/web/dist/assets/{GitHubPrReview-QK9oqeDs.js → GitHubPrReview-CwvkD5lM.js} +1 -1
  81. package/web/dist/assets/{MultiFileView-CMm6tA9f.js → MultiFileView-CQJqxTQ8.js} +1 -1
  82. package/web/dist/assets/index-CKMkB_Mn.js +44 -0
  83. package/web/dist/assets/index-peIf41FX.css +2 -0
  84. package/web/dist/assets/{surfaces-B8Ko8AJ3.js → surfaces-qKFDNruV.js} +1 -1
  85. package/web/dist/index.html +2 -2
  86. package/dist/assets/app-BuuvLo98.js.map +0 -1
  87. package/dist/assets/autopilot-CKgEx8yQ.js.map +0 -1
  88. package/dist/assets/briefing-DYVbJaqk.js +0 -2
  89. package/dist/assets/briefing-DoO-fJr1.js +0 -22
  90. package/dist/assets/briefing-DoO-fJr1.js.map +0 -1
  91. package/dist/assets/command-run-CzQra_Y7.js +0 -2
  92. package/dist/assets/display-assistant-CbCRBSYM.js.map +0 -1
  93. package/dist/assets/fix-pr-ci-Dl1wpKXp.js +0 -2
  94. package/dist/assets/safety-CawD9GxD.js.map +0 -1
  95. package/dist/assets/scheduler-tick-Cy26qBld.js.map +0 -1
  96. package/src/modules/app-state/native-notifications.ts +0 -76
  97. package/web/dist/assets/index-DqZpo0Jd.js +0 -44
  98. package/web/dist/assets/index-_jKCE4ks.css +0 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.0-beta.6
4
+
5
+ ### Patch Changes
6
+
7
+ - [#105](https://github.com/pandemicsyn/neondeck/pull/105) [`d82f8f2`](https://github.com/pandemicsyn/neondeck/commit/d82f8f28914509c6b6ac9710c0c2b09783538cd4) Thanks [@pandemicsyn](https://github.com/pandemicsyn)! - Keep fresh display-assistant sessions active across host timezones and briefing profile updates so manual briefings can run immediately.
8
+
9
+ ## 1.0.0-beta.5
10
+
11
+ ### Minor Changes
12
+
13
+ - [#103](https://github.com/pandemicsyn/neondeck/pull/103) [`5475ffe`](https://github.com/pandemicsyn/neondeck/commit/5475ffe1689b2bfeba29db87bcc4ced21e0463da) Thanks [@pandemicsyn](https://github.com/pandemicsyn)! - Add configurable in-app toast notifications for durable dashboard events.
14
+
15
+ - [#98](https://github.com/pandemicsyn/neondeck/pull/98) [`fc2305b`](https://github.com/pandemicsyn/neondeck/commit/fc2305ba4b08d0a15eab3480f9bcd6b3cf950718) Thanks [@pandemicsyn](https://github.com/pandemicsyn)! - Add durable conversational morning briefings with scheduled Flue dispatch, configurable grounding, persistent conversations, and dashboard controls.
16
+
3
17
  ## Unreleased
4
18
 
5
19
  ## 1.0.0-beta.4 - 2026-07-12
package/DEVELOPMENT.md CHANGED
@@ -250,23 +250,19 @@ npm run changeset
250
250
  ```
251
251
 
252
252
  Use `patch` for fixes, `minor` for features, and `major` for breaking changes.
253
- The private docs workspace is excluded from package versioning. While Neondeck
254
- is on the beta channel, enter Changesets prerelease mode before consuming the
255
- pending changesets:
253
+ The private docs workspace is excluded from package versioning. The committed
254
+ Changesets prerelease state keeps versions on the beta channel. After changesets
255
+ reach `main`, `.github/workflows/changesets.yml` creates or updates a version PR
256
+ containing the package version, lockfile, changelog, and consumed Changesets.
256
257
 
257
- ```sh
258
- npx changeset pre enter beta
259
- npm run version-packages
260
- ```
261
-
262
- Commit the generated package versions, lockfile, changelog, and Changesets
263
- state. Tag the exact package version and push the version commit and annotated
264
- tag together:
258
+ Merge the version PR, pull `main`, then tag and push the exact package version:
265
259
 
266
260
  ```sh
261
+ git switch main
262
+ git pull --ff-only
267
263
  version="$(node -p "JSON.parse(require('node:fs').readFileSync('package.json', 'utf8')).version")"
268
264
  git tag -a "v${version}" -m "neondeck v${version}"
269
- git push origin main --follow-tags
265
+ git push origin "v${version}"
270
266
  ```
271
267
 
272
268
  Prerelease tags such as `v1.0.0-beta.1` publish to npm's `next` dist-tag.
@@ -283,16 +279,14 @@ gh workflow run npm-publish.yml \
283
279
  The npm release path is separate from the GitHub app archive release:
284
280
 
285
281
  - `.github/workflows/npm-package.yml` validates the packed npm artifact on PRs.
282
+ - `.github/workflows/changesets.yml` maintains the version PR from changesets
283
+ merged to `main`.
286
284
  - `.github/workflows/npm-publish.yml` verifies the release tag, runs
287
285
  `npm run release:npm:check`, and publishes `neondeck` to npm from `v*` tags.
288
286
 
289
- For the first npm publish, the package must be created before npm trusted
290
- publishing can be configured. Set a temporary granular publish token with
291
- bypass-2FA enabled as the `NPM_TOKEN` secret on the GitHub `npm` environment,
292
- then push the first release tag. After `neondeck` exists on npm, configure
293
- trusted publishing for GitHub Actions with workflow filename `npm-publish.yml`,
294
- environment `npm`, and allowed action `npm publish`. Delete the GitHub secret
295
- and revoke the temporary npm token after the first trusted publish succeeds.
287
+ npm publishing uses trusted publishing for GitHub Actions with workflow
288
+ `npm-publish.yml`, environment `npm`, and allowed action `npm publish`. Do not
289
+ add a long-lived npm publish token.
296
290
 
297
291
  ## Deeper Runtime Docs
298
292
 
package/README.md CHANGED
@@ -27,9 +27,10 @@ Neon watches your PRs, prepares fixes, and keeps the busywork moving.
27
27
  github.com.
28
28
  - **Handoff, both directions.** Delegate work to agents like Kilo or Codex, then
29
29
  let the finished PR come back to Neon for checks and deployment follow-through.
30
- - **Briefings and scheduled instructions.** Pull your PRs, watches, CI failures,
31
- and next actions into a morning briefing, or run your own saved prompt on a
32
- timer.
30
+ - **Conversational briefings and scheduled instructions.** Neon grounds a
31
+ durable Morning Briefing conversation in an inspectable local snapshot, then
32
+ can enrich it with any relevant configured MCP source under normal login and
33
+ approval controls. Follow up in chat, or run your own saved prompt on a timer.
33
34
  - **Sandboxed, gated execution.** Keep code-changing work in throwaway
34
35
  worktrees, gate shell commands through approval policy, or run work off your
35
36
  machine on an `exe.dev` sandbox VM.
@@ -9,6 +9,14 @@
9
9
  "density": "comfortable"
10
10
  },
11
11
  "theme": "dark",
12
+ "notifications": {
13
+ "toasts": {
14
+ "enabled": true,
15
+ "minimumLevel": "ready",
16
+ "readyDurationMs": 6000,
17
+ "maxVisible": 3
18
+ }
19
+ },
12
20
  "windows": {
13
21
  "sidebar": {
14
22
  "width": 480,
@@ -48,6 +48,36 @@
48
48
  }
49
49
  }
50
50
  },
51
+ "notifications": {
52
+ "type": "object",
53
+ "additionalProperties": true,
54
+ "properties": {
55
+ "toasts": {
56
+ "type": "object",
57
+ "additionalProperties": true,
58
+ "properties": {
59
+ "enabled": {
60
+ "type": "boolean",
61
+ "default": true
62
+ },
63
+ "minimumLevel": {
64
+ "enum": ["info", "ready", "attention", "urgent"],
65
+ "default": "ready"
66
+ },
67
+ "readyDurationMs": {
68
+ "type": "integer",
69
+ "default": 6000,
70
+ "description": "Automatically dismiss ready toasts after this many milliseconds. Values are clamped from 1000 through 60000."
71
+ },
72
+ "maxVisible": {
73
+ "type": "integer",
74
+ "default": 3,
75
+ "description": "Maximum visible toast rows. Values are clamped from 1 through 3."
76
+ }
77
+ }
78
+ }
79
+ }
80
+ },
51
81
  "windows": {
52
82
  "type": "object",
53
83
  "additionalProperties": {
@@ -1,6 +1,7 @@
1
- import { $ as readLearningOperatorState, $i as lockWorktree, $r as installFlueExecutionContextTracker, $t as getGitHubPrFiles, A as readReport, Ai as subscribeChatSessionEvents, An as listTaskRecords, At as reviewKiloResult, Ba as asJsonValue, Bi as formatConfigServerSentEvent, Bt as readRepoFile, Ca as nonEmptyStringSchema, Ci as listChatSessionCommandEvents, Cn as resolvePrReference, Cr as applyDashboardPreset, D as fixPrReviewFeedback, Da as readProviderConfigSync, Di as switchChatSession, E as commentPrAutofixResult, Ea as providerRuntimeRegistrations, Ei as restoreChatSession, Er as triagePrEvent, Fa as ConfigValidationError, Fi as archiveMemory, Fr as localApiTokenQueryParam, Gi as readRepoHealthSnapshot, Gn as verifyPrWorktree, Gt as pushPrAutofix, Ha as invalidInputAction, Hi as subscribeConfigEvents, Hr as listRuntimeSkills, Ht as searchRepoFiles, I as recordConversationTurnAndMaybeQueueLearning, Ia as parseAppConfig, Ii as listMemories, Ir as readLocalApiToken, J as rejectSkillPatchCandidate, Jn as getGitHubPullRequest, Jt as deleteGitHubPrReviewDraft, K as applySkillPatchCandidate, Ka as __require, Ki as readRepoRegistrySnapshot, L as recordHandledPrFromWorkflowResult, La as parseDashboardConfig, Li as listMemoryEvents, Lt as patchRepoFiles, Ma as ensureRuntimeHomeSync, Mn as removeTask, Mr as bearerToken, Mt as recordDocsDriftFixTaskBoundary, Na as readRuntimeJson, Ni as decideMemoryCandidate, Nn as setTaskEnabled, Nr as localApiAuthHeader, Oa as loadNeondeckEnv, Oi as updateChatSessionCommandEvent, On as createAgentInstructionTask, Ot as listKiloResultStates, Pi as listMemoryCandidates, Pr as localApiTokenMatches, Pt as fixPrCiFailure, Qi as createWorktree, Qt as getGitHubPrFileDiff, Ra as runtimePaths, Ri as upsertMemory, Rt as readRepoCheckoutStatus, Sa as subscribeNotificationEvents, Si as linkChatSessionContext, Sn as setPrWatchPolling, Sr as updateExecutionPolicy, St as searchKiloSessions, T as approvePreparedDiffPushWithPolicy, Ta as isRegisteredProvider, Ti as renameChatSession, Tr as reloadConfig, Ua as okAction, Un as settleScheduledTaskWorkflowRun, Ur as loadRuntimeSkill, Ut as writeRepoFile, Va as failedAction, Vi as replayConfigEventsAfter, Vr as readRuntimeStatus, Vt as replaceRepoFile, Wa as __commonJSMin, Wn as preparePrWorktree, Wr as reloadRuntimeSkills, Wt as listRepoEditEvents, Xi as listWorktrees, Xn as listGitHubPrQueue, Xt as getGitHubPrBranchPermissions, Y as restoreSkillPatchCandidate, Yt as deleteGitHubPrReviewDraftComment, Zi as cleanupWorktrees, Zr as getMcpRegistry, Zt as getGitHubPrEventState, _a as addNotification, _i as readChatSessionMessages, _n as addRefWatch, _r as updateRepoAutopilotPolicy, _t as readKiloSession, aa as listPreparedDiffs, ai as removeMcpServer, an as postGitHubPrComment, ba as resolveNotification, bi as createChatSession, bn as listRefWatches, br as updateAgentModels, bt as readKiloSessionMessages, c as abandonPreparedDiffWithRevisionAbort, ca as readPreparedDiffChangedFiles, ci as listMcpApprovals, cn as postGitHubPrThreadReply, cr as runApprovedExecution, d as failAutopilotAdmission, da as requestPreparedDiffRevision, dn as refreshPrWatchEventState, dr as resolveExecutionApproval, dt as readKiloTaskDiff, ea as readWorktreeStatus, ei as completeMcpOAuthCallback, en as getGitHubPrRequestedChanges, et as readWorkflowObservability, f as recordAutopilotAdmissionRun, fa as runPreparedDiffVerification, fr as checkExecutionPolicy, ft as readKiloTaskEvents, ga as setWorkflowSummaryRunId, gi as readChatSession, gn as addPrWatch, h as settleAutopilotAdmissionTriage, ha as listWorkflowSummaries, hi as listChatSessions, hr as readExecutionPolicy, ht as startKiloTask, i as runAutopilotRecoveryAction, ii as addMcpServer, in as patchGitHubPrReviewDraftComment, it as listLearningReviews, j as readReportHtml, ja as ensureRuntimeHome, jn as readTaskRecord, jr as readHostMetrics, jt as verifyKiloResult, k as listReports, ki as formatChatSessionServerSentEvent, kn as createBriefingTask, kt as promoteKiloResult, l as runPreparedDiffRevision, la as readPreparedDiffFileDiff, li as listMcpAudit, ln as postGitHubPrThreadResolution, lr as listExecutionApprovals, lt as abortKiloTask, m as settleAutopilotAdmissionPrepare, ma as addWorkflowSummary, mi as refreshChatSessionSummary, mt as readKiloTaskStatus, na as syncWorktree, ni as readPublicMcpOAuthLogin, nn as getGitHubPrReviewThreads, nt as loadAutomationLearningMemoryContext, o as readAutopilotState, oa as openPreparedDiffWorktree, oi as setMcpServerEnabled, on as postGitHubPrReview, or as syncExeDevCheckout, p as recordAutopilotAdmissionTerminalFact, pa as readApprovalRecord, pi as referenceChatSession, pt as readKiloTaskSessions, q as listSkillPatchCandidates, qi as repoFullName, r as readAutopilotRecoveryOptions, ri as startMcpOAuthLogin, rn as listPrWatchEventWatermarks, rt as attachLearningReviewRunId, s as autopilotStateSchema, si as updateMcpServer, sn as postGitHubPrReviewDraftComment, ta as releaseWorktreeLock, ti as logoutMcpOAuthServer, tn as getGitHubPrReviewDraft, tt as recordFlueObservation, u as beginAutopilotAdmissionPrepare, ua as readPreparedDiffSummary, ui as resolveMcpApprovalWithPaths, un as putGitHubPrReviewDraft, ur as requestExecutionApproval, ut as listKiloTasks, va as listNotifications, vi as searchChatSessions, vr as readProviderConfig, vt as readKiloSessionChildren, wa as parseInput, wi as pinChatSession, wr as updateDashboardLayout, xa as formatNotificationServerSentEvent, xi as createChatSessionCommandEvent, xn as removePrWatch, xr as updateWorktreePolicy, xt as readUnavailableSessionAdapter, ya as markNotificationRead, yi as archiveChatSession, yn as listPrWatches, yr as updateProviderConfig, yt as readKiloSessionDiff, zi as readNeonSessionState, zt as readRepoDiff } from "./autopilot-CKgEx8yQ.js";
2
- import { a as runSchedulerTick, c as rollbackQuietly, f as supportedCommands, n as readSafetyPolicy, o as isSqliteBusy, s as readMetadataValue } from "./safety-CawD9GxD.js";
3
- import { a as review_conversation_for_learning_default, r as review_pr_batch_for_learning_default, s as curate_learning_store_default, t as scheduler_tick_default } from "./scheduler-tick-Cy26qBld.js";
1
+ import { $ as readLearningOperatorState, $n as listGitHubPrQueue, $t as getGitHubPrFiles, A as readReport, Aa as providerRuntimeRegistrations, Ai as switchChatSession, An as listTaskRecords, At as reviewKiloResult, Ba as parseAppConfig, Bi as listMemories, Bt as readRepoFile, Ca as markNotificationRead, Ci as createChatSession, Cn as resolvePrReference, Cr as updateAgentModels, D as fixPrReviewFeedback, Da as nonEmptyStringSchema, Di as pinChatSession, Dr as updateDashboardLayout, E as commentPrAutofixResult, Ea as subscribeNotificationEvents, Ei as listChatSessionCommandEvents, Er as applyDashboardPreset, Fa as ensureRuntimeHome, Fr as bearerToken, Ga as failedAction, Gi as replayConfigEventsAfter, Gr as listRuntimeSkills, Gt as pushPrAutofix, Ha as runtimePaths, Hi as upsertMemory, Ht as searchRepoFiles, I as recordConversationTurnAndMaybeQueueLearning, Ia as ensureRuntimeHomeSync, Ir as localApiAuthHeader, J as rejectSkillPatchCandidate, Ja as __commonJSMin, Jn as verifyPrWorktree, Jt as deleteGitHubPrReviewDraft, K as applySkillPatchCandidate, Ka as invalidInputAction, Ki as subscribeConfigEvents, Kr as loadRuntimeSkill, L as recordHandledPrFromWorkflowResult, La as readRuntimeJson, Li as decideMemoryCandidate, Lr as localApiTokenMatches, Lt as patchRepoFiles, Ma as loadNeondeckEnv, Mi as formatChatSessionServerSentEvent, Mn as removeTask, Mt as recordDocsDriftFixTaskBoundary, Nn as setTaskEnabled, Oa as parseInput, Oi as renameChatSession, On as createAgentInstructionTask, Or as reloadConfig, Ot as listKiloResultStates, Pi as subscribeChatSessionEvents, Pr as readHostMetrics, Pt as fixPrCiFailure, Qt as getGitHubPrFileDiff, Ri as listMemoryCandidates, Rr as localApiTokenQueryParam, Rt as readRepoCheckoutStatus, Sa as listNotifications, Si as archiveChatSession, Sn as setPrWatchPolling, Sr as updateProviderConfig, St as searchKiloSessions, T as approvePreparedDiffPushWithPolicy, Ta as formatNotificationServerSentEvent, Ti as linkChatSessionContext, Tr as updateExecutionPolicy, Ui as readNeonSessionState, Ut as writeRepoFile, Va as parseDashboardConfig, Vi as listMemoryEvents, Vt as replaceRepoFile, Wa as asJsonValue, Wi as formatConfigServerSentEvent, Wn as settleScheduledTaskWorkflowRun, Wr as readRuntimeStatus, Wt as listRepoEditEvents, Xa as __require, Xi as readRepoRegistrySnapshot, Xt as getGitHubPrBranchPermissions, Y as restoreSkillPatchCandidate, Yi as readRepoHealthSnapshot, Yt as deleteGitHubPrReviewDraftComment, Zi as repoFullName, Zn as getGitHubPullRequest, Zt as getGitHubPrEventState, _a as readApprovalRecord, _i as refreshChatSessionSummary, _n as addRefWatch, _t as readKiloSession, aa as releaseWorktreeLock, ai as readPublicMcpOAuthLogin, an as postGitHubPrComment, ba as setWorkflowSummaryRunId, bi as readChatSessionMessages, bn as listRefWatches, br as updateRepoAutopilotPolicy, bt as readKiloSessionMessages, c as abandonPreparedDiffWithRevisionAbort, ci as removeMcpServer, cn as postGitHubPrThreadReply, d as failAutopilotAdmission, di as listMcpApprovals, dn as refreshPrWatchEventState, dr as runApprovedExecution, dt as readKiloTaskDiff, ea as listWorktrees, ei as getMcpRegistry, en as getGitHubPrRequestedChanges, et as readWorkflowObservability, f as recordAutopilotAdmissionRun, fa as readPreparedDiffChangedFiles, fi as listMcpAudit, fr as listExecutionApprovals, ft as readKiloTaskEvents, ga as runPreparedDiffVerification, gi as referenceChatSession, gn as addPrWatch, h as settleAutopilotAdmissionTriage, ha as requestPreparedDiffRevision, hr as checkExecutionPolicy, ht as startKiloTask, i as runAutopilotRecoveryAction, ia as readWorktreeStatus, ii as logoutMcpOAuthServer, in as patchGitHubPrReviewDraftComment, it as listLearningReviews, j as readReportHtml, ja as readProviderConfigSync, ji as updateChatSessionCommandEvent, jn as readTaskRecord, jt as verifyKiloResult, k as listReports, ka as isRegisteredProvider, ki as restoreChatSession, kn as createBriefingTask, kr as triagePrEvent, kt as promoteKiloResult, l as runPreparedDiffRevision, la as listPreparedDiffs, li as setMcpServerEnabled, ln as postGitHubPrThreadResolution, lr as syncExeDevCheckout, lt as abortKiloTask, m as settleAutopilotAdmissionPrepare, ma as readPreparedDiffSummary, mr as resolveExecutionApproval, mt as readKiloTaskStatus, na as createWorktree, ni as installFlueExecutionContextTracker, nn as getGitHubPrReviewThreads, nt as loadAutomationLearningMemoryContext, o as readAutopilotState, oa as syncWorktree, oi as startMcpOAuthLogin, on as postGitHubPrReview, p as recordAutopilotAdmissionTerminalFact, pa as readPreparedDiffFileDiff, pi as resolveMcpApprovalWithPaths, pr as requestExecutionApproval, pt as readKiloTaskSessions, q as listSkillPatchCandidates, qa as okAction, qn as preparePrWorktree, qr as reloadRuntimeSkills, r as readAutopilotRecoveryOptions, ra as lockWorktree, ri as completeMcpOAuthCallback, rn as listPrWatchEventWatermarks, rt as attachLearningReviewRunId, s as autopilotStateSchema, si as addMcpServer, sn as postGitHubPrReviewDraftComment, ta as cleanupWorktrees, tn as getGitHubPrReviewDraft, tt as recordFlueObservation, u as beginAutopilotAdmissionPrepare, ua as openPreparedDiffWorktree, ui as updateMcpServer, un as putGitHubPrReviewDraft, ut as listKiloTasks, va as addWorkflowSummary, vi as listChatSessions, vr as readExecutionPolicy, vt as readKiloSessionChildren, wa as resolveNotification, wi as createChatSessionCommandEvent, wr as updateWorktreePolicy, xa as addNotification, xi as searchChatSessions, xn as removePrWatch, xr as readProviderConfig, xt as readUnavailableSessionAdapter, ya as listWorkflowSummaries, yi as readChatSession, yn as listPrWatches, yt as readKiloSessionDiff, za as ConfigValidationError, zi as archiveMemory, zr as readLocalApiToken, zt as readRepoDiff } from "./autopilot-CuVDqfcB.js";
2
+ import { a as readBriefingState, c as settleBriefingObservation, i as readBriefingRunDetails, l as updateBriefingProfile, o as rotateBriefingSession, r as linkBriefingWorkflowObservation, s as runBriefingNow } from "./briefings-BnBRFYeL.js";
3
+ import { a as runSchedulerTick, c as rollbackQuietly, d as supportedCommands, n as readSafetyPolicy, o as isSqliteBusy, s as readMetadataValue } from "./safety-D1Y07udx.js";
4
+ import { a as review_conversation_for_learning_default, r as review_pr_batch_for_learning_default, s as curate_learning_store_default, t as scheduler_tick_default } from "./scheduler-tick-HqkOkEhU.js";
4
5
  import { getRun, invoke, listRuns, observe, registerProvider } from "@flue/runtime";
5
6
  import { createHash, randomUUID } from "node:crypto";
6
7
  import { existsSync } from "node:fs";
@@ -450,6 +451,9 @@ function installFlueObservationHandlers(paths, dependencies = {}) {
450
451
  attachCommandRunSummaryRunId(event, paths).catch((error) => {
451
452
  console.error("[neondeck] failed to attach Flue run id", error);
452
453
  });
454
+ linkBriefingWorkflowObservation(event, paths).catch((error) => {
455
+ console.error("[neondeck] failed to link briefing workflow run", error);
456
+ });
453
457
  const learningReviewId = learningReviewResultId(event);
454
458
  if (learningReviewId) Promise.resolve().then(() => attachLearningReviewRunId({
455
459
  reviewId: learningReviewId,
@@ -482,6 +486,9 @@ function installFlueObservationHandlers(paths, dependencies = {}) {
482
486
  });
483
487
  return;
484
488
  }
489
+ if (event.type === "agent_end" || event.type === "operation" || event.type === "submission_settled") settleBriefingObservation(event, paths).catch((error) => {
490
+ console.error("[neondeck] failed to settle briefing submission", error);
491
+ });
485
492
  recordFlueObservation(event, paths).catch((error) => {
486
493
  console.error("[neondeck] failed to record Flue observation", error);
487
494
  });
@@ -511,7 +518,7 @@ async function startPrepareAfterTriage(event, paths) {
511
518
  const admission = await beginAutopilotAdmissionPrepare({ triageRunId: event.runId }, paths);
512
519
  if (!admission) return;
513
520
  try {
514
- const { runId } = await invoke((await import("./prepare-pr-worktree-CLzccRYh.js")).default, { input: {
521
+ const { runId } = await invoke((await import("./prepare-pr-worktree-CgSjjz_X.js")).default, { input: {
515
522
  repoId: admission.repoId,
516
523
  prNumber: admission.prNumber,
517
524
  eventId: admission.eventFingerprint,
@@ -794,8 +801,8 @@ async function invokeWorkflowForRuntimeHome(paths, dispatch, invokeWorkflow) {
794
801
  return invokeWorkflow(dispatch.workflow, dispatch.input);
795
802
  }
796
803
  async function invokeAutopilotWorkflow(workflow, input) {
797
- if (workflow === "push-pr-autofix") return invokeWorkflow((await import("./push-pr-autofix-BFNSEASU.js")).default, { input });
798
- return invokeWorkflow((await import("./verify-then-push-pr-autofix-CIl5ZwZm.js")).default, { input });
804
+ if (workflow === "push-pr-autofix") return invokeWorkflow((await import("./push-pr-autofix-jUKVyyZZ.js")).default, { input });
805
+ return invokeWorkflow((await import("./verify-then-push-pr-autofix-CKnTC8yC.js")).default, { input });
799
806
  }
800
807
  async function recordDispatchFailure(preparedDiff, mode, dispatch, approvalId, error, paths) {
801
808
  await addWorkflowSummary({
@@ -1104,6 +1111,29 @@ async function resolvePreparedDiffRevisionFromRoute(preparedDiffId, input, paths
1104
1111
  };
1105
1112
  }
1106
1113
  //#endregion
1114
+ //#region src/server/routes/briefings.ts
1115
+ function createBriefingRoutes(paths) {
1116
+ const routes = new Hono();
1117
+ routes.get("/briefings", async (c) => c.json(await readBriefingState(paths)));
1118
+ routes.get("/briefings/runs/:id", async (c) => {
1119
+ const result = await readBriefingRunDetails(c.req.param("id"), paths);
1120
+ return c.json(result, result.ok ? 200 : 404);
1121
+ });
1122
+ routes.put("/briefings/profile", async (c) => {
1123
+ const result = await updateBriefingProfile(await safeJsonObject(c), paths);
1124
+ return c.json(result, result.ok ? 200 : 400);
1125
+ });
1126
+ routes.post("/briefings/run", async (c) => {
1127
+ const result = await runBriefingNow(await safeJsonObject(c), paths);
1128
+ return c.json(result, result.ok ? 202 : 400);
1129
+ });
1130
+ routes.post("/briefings/session/rotate", async (c) => {
1131
+ const result = await rotateBriefingSession(await safeJsonObject(c), paths);
1132
+ return c.json(result, result.ok ? 200 : 400);
1133
+ });
1134
+ return routes;
1135
+ }
1136
+ //#endregion
1107
1137
  //#region src/server/routes/commands.ts
1108
1138
  function createCommandRoutes() {
1109
1139
  const routes = new Hono();
@@ -1668,7 +1698,7 @@ async function externalReviewQueueAllowed(paths) {
1668
1698
  }
1669
1699
  async function invokeReviewPrWorkflow(input) {
1670
1700
  const { invoke } = await import("@flue/runtime");
1671
- return invoke((await import("./review-pr-for-human-B2j8wz2L.js")).default, { input });
1701
+ return invoke((await import("./review-pr-for-human-CUiMGwmG.js")).default, { input });
1672
1702
  }
1673
1703
  async function addHandoffAudit(summary, paths, options = {}) {
1674
1704
  return addWorkflowSummary({
@@ -3568,6 +3598,7 @@ async function createApp(options = {}) {
3568
3598
  app.route("/api", createWorktreeRoutes(paths));
3569
3599
  app.route("/api/kilo", createKiloRoutes(paths));
3570
3600
  app.route("/api", createAutopilotRoutes(paths));
3601
+ app.route("/api", createBriefingRoutes(paths));
3571
3602
  app.route("/api", createHandoffRoutes(paths));
3572
3603
  app.route("/api", createWatchRoutes(paths));
3573
3604
  app.route("/api", createSchedulerRoutes(paths));
@@ -3617,4 +3648,4 @@ var app_default = await createApp();
3617
3648
  //#endregion
3618
3649
  export { app_default as default };
3619
3650
 
3620
- //# sourceMappingURL=app-BuuvLo98.js.map
3651
+ //# sourceMappingURL=app-CYRclf6Z.js.map