@interactive-inc/claude-funnel 0.66.0 → 0.68.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 (97) hide show
  1. package/README.md +31 -6
  2. package/dist/bin.js +292 -383
  3. package/dist/channel.d.ts +76 -52
  4. package/dist/channel.js +82 -47
  5. package/dist/{channels-DR90RmUP.d.ts → channels-B0cifCfw.d.ts} +6 -6
  6. package/dist/claude.d.ts +11 -8
  7. package/dist/claude.js +31 -15
  8. package/dist/connector-descriptor-D4XtEsH8.d.ts +215 -0
  9. package/dist/{connector-diagnostics-recorder-COtNEmUp.js → connector-diagnostics-recorder-BmOijU1p.js} +1 -0
  10. package/dist/connectors/discord.d.ts +11 -8
  11. package/dist/connectors/discord.js +2 -2
  12. package/dist/connectors/gh.d.ts +7 -6
  13. package/dist/connectors/gh.js +2 -2
  14. package/dist/connectors/schedule.d.ts +21 -17
  15. package/dist/connectors/schedule.js +3 -3
  16. package/dist/connectors/slack.d.ts +15 -10
  17. package/dist/connectors/slack.js +3 -3
  18. package/dist/diagnostic-event-CxMM5Bl2.js +78 -0
  19. package/dist/diagnostic-log-BsAg5qZK.d.ts +186 -0
  20. package/dist/diagnostics.d.ts +2 -2
  21. package/dist/diagnostics.js +3 -2
  22. package/dist/{discord-connector-DXARcO6w.js → discord-connector-CAcWifJn.js} +6 -6
  23. package/dist/{discord-connector-schema-D1dyxhXk.d.ts → discord-connector-schema-BaBZYHxK.d.ts} +0 -1
  24. package/dist/docs.d.ts +1 -1
  25. package/dist/docs.js +1 -1
  26. package/dist/doctor.d.ts +1 -1
  27. package/dist/doctor.js +1 -1
  28. package/dist/event-log.d.ts +2 -0
  29. package/dist/event-log.js +3 -0
  30. package/dist/{file-process-guard-CiBwXjzm.d.ts → file-process-guard-D-QatrwL.d.ts} +22 -18
  31. package/dist/{file-system-DHgbuTFb.d.ts → file-system-BNtl997T.d.ts} +2 -1
  32. package/dist/{flume-source-listener-FzR5lGpL.d.ts → flume-source-listener-Ba8_1Mg-.d.ts} +9 -6
  33. package/dist/{funnel-diagnostics-Cvk6Sk4x.js → funnel-diagnostics-CAG7hJP0.js} +85 -141
  34. package/dist/{funnel-diagnostics-kbd27d7I.d.ts → funnel-diagnostics-CDrZznTB.d.ts} +18 -18
  35. package/dist/{funnel-docs-C-ge0MuB.js → funnel-docs-CI4hMkhq.js} +12 -3
  36. package/dist/{funnel-doctor-CVTNUtDn.d.ts → funnel-doctor-CY4S5cnz.d.ts} +20 -9
  37. package/dist/{funnel-doctor-XrI2GBH8.js → funnel-doctor-Csw5qjcH.js} +1 -0
  38. package/dist/{funnel-error-0t1MK1R6.js → funnel-error-DoSBCogD.js} +13 -0
  39. package/dist/{funnel-recovery-D8MkiTpk.d.ts → funnel-recovery-BwcSNNSN.d.ts} +1 -2
  40. package/dist/{funnel-recovery-DKnEutUS.js → funnel-recovery-DYbSYGWC.js} +1 -0
  41. package/dist/gateway/daemon.js +60 -139
  42. package/dist/gateway.d.ts +2 -3
  43. package/dist/gateway.js +2 -2
  44. package/dist/{gh-connector-BUGCOEWS.js → gh-connector-DMwI6zJA.js} +5 -5
  45. package/dist/{gh-connector-schema-BCHEqpUg.d.ts → gh-connector-schema-BrNsCl1T.d.ts} +0 -1
  46. package/dist/{index-BU1TtuFy.d.ts → index-fHrKn4jm.d.ts} +210 -40
  47. package/dist/index.d.ts +125 -115
  48. package/dist/index.js +242 -57
  49. package/dist/{local-config-json-schema-DexV8vX3.js → local-config-json-schema-_-YVHX4c.js} +4 -4
  50. package/dist/local-config.d.ts +2 -3
  51. package/dist/local-config.js +1 -1
  52. package/dist/logger.d.ts +17 -265
  53. package/dist/logger.js +6 -141
  54. package/dist/memory-event-log-BY8XjFzi.js +147 -0
  55. package/dist/{memory-token-prompter-D0kIdhar.d.ts → memory-token-prompter-B20tl_aU.d.ts} +2 -3
  56. package/dist/{node-file-system-BOXIHW_Q.js → node-file-system-xJx7dymE.js} +11 -3
  57. package/dist/{profiles-M24JrcOh.d.ts → profiles-CePRnv3F.d.ts} +3 -4
  58. package/dist/{profiles-ZHLONml4.js → profiles-KpN7_gBw.js} +19 -5
  59. package/dist/profiles.d.ts +1 -1
  60. package/dist/profiles.js +1 -1
  61. package/dist/recovery.d.ts +1 -1
  62. package/dist/recovery.js +1 -1
  63. package/dist/{schedule-connector-9k3gOIgl.js → schedule-connector-BXUOYgwZ.js} +63 -99
  64. package/dist/schedule-connector-schema-CNV8PgWX.js +137 -0
  65. package/dist/schedule-connector-schema-Tq5kJul-.d.ts +127 -0
  66. package/dist/{settings-reader-BnKIbmsD.d.ts → settings-reader-CyTpbAre.d.ts} +1 -2
  67. package/dist/{settings-schema-IShSMm5G.d.ts → settings-schema-B-CKLuST.d.ts} +0 -1
  68. package/dist/{settings-store-ccv291GV.js → settings-store-ZFWBhOnp.js} +12 -3
  69. package/dist/{slack-connector-CxpWagbT.js → slack-connector-CC3V2VXQ.js} +10 -9
  70. package/dist/{slack-event-processor-xFDG3US0.js → slack-event-processor-Cs_YuI3w.js} +2 -2
  71. package/dist/{slack-event-processor-BDTr62cN.d.ts → slack-event-processor-DmAlq4cV.d.ts} +0 -1
  72. package/dist/{slot-fields-D-pvMgTK.js → slot-fields-eCWizJqS.js} +4 -4
  73. package/dist/{sqlite-diagnostic-log-CwhXE9Qh.js → sqlite-diagnostic-log-Qs4cf9I_.js} +92 -100
  74. package/dist/sqlite-event-log-BYgCFMxC.d.ts +284 -0
  75. package/dist/{funnel-log-sqlite-sink-DLYkY0pZ.js → sqlite-event-log-eZuXKszJ.js} +53 -12
  76. package/dist/{yaml-render-DVEtYuF1.js → yaml-render-DxxRQT-V.js} +3 -3
  77. package/package.json +25 -10
  78. package/dist/broadcaster-DVNcw00K.d.ts +0 -138
  79. package/dist/connector-descriptor-CmyHlEiT.d.ts +0 -380
  80. package/dist/diagnostic-sql-reader-oXZnWFf_.js +0 -83
  81. package/dist/file-system-Wvzc2ePY.js +0 -9
  82. package/dist/logger-B6iyNbxM.js +0 -9
  83. package/dist/schedule-connector-schema-D7ZEKvit.d.ts +0 -49
  84. package/dist/schedule-connector-schema-DKEPZnVv.js +0 -31
  85. package/dist/settings-reader-9FcX3qS1.js +0 -11
  86. /package/dist/{connector-adapter-Dvs8N7ew.js → connector-adapter-BL2ehMej.js} +0 -0
  87. /package/dist/{connector-listener-mPGZYa8e.js → connector-listener-BcQMzY6Q.js} +0 -0
  88. /package/dist/{discord-connector-schema-B4YpWpR3.js → discord-connector-schema-saAGuPmJ.js} +0 -0
  89. /package/dist/{error-message-of-ColuYmAk.js → error-message-of-BG4ezZ_s.js} +0 -0
  90. /package/dist/{funnel-docs-Cd66sKyV.d.ts → funnel-docs-BJWawfWI.d.ts} +0 -0
  91. /package/dist/{gh-connector-schema-CAqIhzGr.js → gh-connector-schema-DmZTrzUu.js} +0 -0
  92. /package/dist/{logger-Bc_Ooypb.d.ts → logger-mMZvblTx.d.ts} +0 -0
  93. /package/dist/{loopback-fetch-CVNuN3YZ.js → loopback-fetch-HP-bo9Kv.js} +0 -0
  94. /package/dist/{node-http-client-u00atiKx.js → node-http-client-SX3xFh4h.js} +0 -0
  95. /package/dist/{node-process-runner-DxTvycoK.js → node-process-runner-D4rzPl8Q.js} +0 -0
  96. /package/dist/{resolve-connector-token-DxDG9mhf.js → resolve-connector-token-BwiJCu82.js} +0 -0
  97. /package/dist/{slack-connector-schema-Dem8to4P.js → slack-connector-schema-EGVuuqSX.js} +0 -0
package/README.md CHANGED
@@ -97,7 +97,7 @@ profiles は起動レシピ。各プロファイルは一意な `name` を持ち
97
97
 
98
98
  `funnel.json` に書けないものが 2 つある。delivery モード(fanout / exclusive)は CLI で設定する(`funnel.json` のチャネルは fanout 固定)。schedule の cron エントリも CLI で足す(`funnel.json` には schedule コネクタの存在だけ宣言できる)。
99
99
 
100
- セッション再開には `resume` の明示が要る。`funnel.json` の `resume` はデフォルト値を持たず、書かないと再開されない(未指定が false 扱いになる)。前回の claude セッションを引き継ぎたいなら必ず `"resume": true` を書く。再開のための session id は funnel が `~/.funnel/projects/<id>/settings.json` に自動で保存・読み出しするので、`funnel.json` には書かない。
100
+ セッション再開には `resume` の明示が要る。`funnel.json` の `resume` はデフォルト値を持たず、書かないと再開されない(未指定が false 扱いになる)。前回の claude セッションを引き継ぎたいなら必ず `"resume": true` を書く。再開のための session id は funnel が `~/.funnel/projects/<id>/claude/local-sessions.json` に自動で保存・読み出しするので、`funnel.json` には書かない。
101
101
 
102
102
  ### 使い方
103
103
 
@@ -116,9 +116,13 @@ cron 起動を足す(schedule コネクタを宣言したうえで、エント
116
116
  bunx fnl channels ops connectors add daily --type=schedule
117
117
  bunx fnl channels ops connectors daily schedules add morning \
118
118
  --cron="0 9 * * *" --prompt="morning standup"
119
+ bunx fnl channels ops connectors daily schedules add release \
120
+ --run-at="2026-08-01T09:00:00+09:00" --prompt="release check"
119
121
  ```
120
122
 
121
- tick ごとにプロンプトがチャネルへ発火する。9 時にデーモンが落ちていても、次回起動時に逃した枠を catch-up する(`meta.catchup = "true"`、最大 24 時間)。
123
+ cron は一致する tick ごと、一回実行は `run-at` 以降の最初の tick でプロンプトを発火する。発火済みの一回実行は state に記録されるため、設定削除の hook が失敗しても再発火しない。デーモン停止中に逃した枠は次回起動時に catch-up する(`meta.catchup = "true"`。cron の探索は最大 24 時間)。
124
+
125
+ cron は標準の 5 フィールド規則に従う。day-of-month と day-of-week を両方限定した場合は OR、日曜は `0` と `7` の両方を受け付ける。不正な式は登録時に拒否される。
122
126
 
123
127
  `funnel.json` を持つリポジトリは自分自身にスコープされる。初回起動時に funnel は `funnel.json` の先頭へ不変の `id`(uuid) を書き戻し、以降このリポジトリの funnel state を `~/.funnel/projects/<id>/` 配下に隔離する。グローバルの `~/.funnel` には一切触らない(イベントログと一時ファイルだけが `/tmp/funnel/` で共有)。このスコープはリポジトリ内で実行する全 CLI コマンドに効く。
124
128
 
@@ -300,7 +304,8 @@ Settings = { channels[], profiles[] } → ~/.funnel/settings.j
300
304
  ├── gateway.pid デーモン PID
301
305
  ├── gateway.token デーモン HTTP / WS の Bearer token
302
306
  ├── claude/
303
- └── <profile-id>.pid 同一プロファイルの二重起動を防ぐ(profile id がキー)
307
+ ├── <profile-id>.pid 同一プロファイルの二重起動を防ぐ(profile id がキー)
308
+ │ └── local-sessions.json funnel.json profile の再開用 session id
304
309
  └── channels/
305
310
  └── <channel-id>/
306
311
  └── connectors/
@@ -308,7 +313,7 @@ Settings = { channels[], profiles[] } → ~/.funnel/settings.j
308
313
  └── state.json コネクタごとの永続 state(例: schedule の lastFiredAt)
309
314
 
310
315
  /tmp/funnel/
311
- ├── events.db offset 再生付きの SQLite イベントログ
316
+ ├── events/<scope>.db dir + port ごとに分離した offset 再生ログ
312
317
  ├── funnel.log 診断ログ(デーモンの起動、listener boot、接続)
313
318
  └── gateway.log デーモンの stdout/stderr
314
319
  ```
@@ -400,7 +405,7 @@ const base = gatewayLoopbackUrl(9743) // → http://127.0.0.1:9743
400
405
  ```
401
406
 
402
407
  - 非ループバック bind(`gatewayServer({ hostname: "0.0.0.0" })`)は token 無しだと `start()` が throw する。前段で自前認証する場合のみ `allowInsecureHost: true`
403
- - コネクタの token は `botToken` か `botTokenEnv` の片方だけ(両方同時はコンパイルエラー)、event store は `dbPath` か `eventLog` の片方だけ、launch の `resume` は `profileId` がある時だけ指定できる
408
+ - コネクタの token は `botToken` か `botTokenEnv` の片方だけ(両方同時はコンパイルエラー)、event store は `dbPath` か `eventLog` の片方だけ、launch の `resume` は stable な `profileId` がある時だけ指定できる
404
409
 
405
410
  ### サブエントリ
406
411
 
@@ -418,9 +423,29 @@ import { FunnelLocalConfig } from "@interactive-inc/claude-funnel/local-config"
418
423
 
419
424
  // コネクタの descriptor とスキーマ(Slack / Discord / GitHub / Schedule)
420
425
  // descriptor(slackConnector 等)を new Funnel({ connectors: [...] }) に渡す
421
- import { slackConnector, slackConnectorSchema } from "@interactive-inc/claude-funnel/connectors/slack"
426
+ import {
427
+ slackConnector,
428
+ slackConnectorSchema,
429
+ } from "@interactive-inc/claude-funnel/connectors/slack"
430
+
431
+ // Channel manifest(flume sources を broadcaster に流す宣言的 channel。ConnectorDescriptor 系とは独立)
432
+ import {
433
+ FunnelChannelSupervisor,
434
+ timeChannel,
435
+ defineChannel,
436
+ } from "@interactive-inc/claude-funnel/channel"
422
437
  ```
423
438
 
439
+ 汎用のstructured event logは製品APIから独立したサブエントリです。
440
+ 新しいコードではこちらを使います。
441
+
442
+ ```ts
443
+ import { EventLog, MemoryEventLog } from "@interactive-inc/claude-funnel/event-log"
444
+ ```
445
+
446
+ 既存の `@interactive-inc/claude-funnel/logger` と `FunnelLog` 系は互換性のため
447
+ 維持しています。text diagnostic logも引き続きloggerサブエントリにあります。
448
+
424
449
  ### テスト用のサンドボックス
425
450
 
426
451
  `Funnel.inMemory()` は全 IO 境界(ディスク / プロセス / clock / UUID)を Memory 実装で配線済みの Funnel を返す。`props` の任意の部分集合で個々の seam を上書きできるので、実 FS や spawn に触れずにテストを書ける。