Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
363 commits
Select commit Hold shift + click to select a range
a515635
chore(plugins): repin consumers to contract beta.22 / SDK 0.2.0-beta.5
mindfn Sep 24, 2026
a31deb5
chore(catalog): repin 10 consumer pins for P1.3 shrinkwrap bytes
mindfn Sep 24, 2026
11ff564
fix(telegram): skip the empty text send for non-cat media-only delive…
mindfn Sep 24, 2026
8231317
fix(connectors): run reply-sender map sweep in the background single-…
mindfn Sep 24, 2026
9569d07
feat(connector-feishu): subscribe at presentation v2 and render legac…
mindfn Sep 24, 2026
c19fdfd
chore(catalog): repin 7 connector pins for placeholder/sweep bytes
mindfn Sep 24, 2026
21be428
fix(connectors): isolate sender-name resolution from placeholder send…
mindfn Sep 24, 2026
2a5f2a2
fix(connectors): write lifecycle state ahead of platform side effects
mindfn Sep 24, 2026
c5dfc8a
feat(telegram): stop editing consumed inline-final placeholders and p…
mindfn Sep 24, 2026
aff5cd8
feat(connectors): tombstone settled lifecycle records and sweep stale…
mindfn Sep 24, 2026
feef6ea
feat(connectors): fan lifecycle and outbound effects out to every thr…
mindfn Sep 24, 2026
7b84f76
chore(catalog): repin 7 connector pins for multi-binding fan-out bytes
mindfn Sep 24, 2026
d392d90
fix(connectors): answer same-deliveryId content conflicts on settled …
mindfn Sep 24, 2026
84da8d9
fix(telegram): key inline-final correlation by (lifecycle, chat) and …
mindfn Sep 24, 2026
47aca26
fix(connectors): isolate outbound sends per thread binding
mindfn Sep 24, 2026
76591ce
fix(connectors): re-execute recovery side effects left pending by a c…
mindfn Sep 24, 2026
4872dce
test(connectors): stop tmpdir snapshot races in media cleanup assertions
mindfn Sep 24, 2026
b3118d4
chore(catalog): repin 7 connector pins for per-binding outbound isola…
mindfn Sep 24, 2026
8334db0
docs(f202-c1): refresh the plugins implementation checkpoint to 2026-…
mindfn Sep 24, 2026
d68ea7f
fix(connectors): reject outbound action when every binding fails sile…
mindfn Sep 25, 2026
40e0942
fix(telegram): drop inline-final consumed markers at settle and prune
mindfn Sep 25, 2026
c97c45a
fix(telegram): treat "message is not modified" edit rejection as applied
mindfn Sep 25, 2026
70e0979
fix(connectors): harden shared lifecycle pending-effect handling
mindfn Sep 25, 2026
558e0e3
test(telegram): pin crash-reexecution semantics for the pending-effec…
mindfn Sep 25, 2026
39461c5
chore(catalog): repin 7 connector pins for lifecycle hardening bytes
mindfn Sep 25, 2026
e83c23e
fix(lifecycle): clear the pending-effect marker only after an attempt…
mindfn Sep 25, 2026
ef31531
test(telegram): pin the two remaining unguarded replay/consumed-marke…
mindfn Sep 25, 2026
d50d0dd
Merge remote-tracking branch 'origin/main' into feat/f202-train-c1-pl…
mindfn Sep 25, 2026
2fbf975
Merge remote-tracking branch 'origin/main' into feat/f202-train-c1-pl…
mindfn Sep 25, 2026
9909f2e
chore(companion): bump to 0.1.0-alpha.6 (#54)
mindfn Sep 25, 2026
b3d19c1
chore(plugins): repin consumers to contract beta.23 / SDK 0.2.0-beta.6
mindfn Sep 25, 2026
e2aef8f
chore(catalog): repin companion + 10 consumers for contract beta.23 /…
mindfn Sep 25, 2026
fcc594d
feat(personal-chrome-companion): replace extension + native-host with…
mindfn Sep 25, 2026
d350937
test(personal-chrome-companion): port Host test suite for extension +…
mindfn Sep 25, 2026
63b551a
chore(personal-chrome-companion): include lockfile update for jsdom d…
mindfn Sep 25, 2026
fd79279
test(fresh-consumer): align personal-chrome-companion pack contract w…
mindfn Sep 25, 2026
7a9087e
chore(personal-chrome-companion): address W2-3 p1 review nits
mindfn Sep 25, 2026
678681a
test(fresh-consumer): pin host_permissions of the migrated ChatGPT Pr…
mindfn Sep 25, 2026
d25c4eb
Merge remote-tracking branch 'origin/main' into feat/f202-train-c1-pl…
mindfn Sep 26, 2026
1ba2423
chore(companion): bump to 0.1.0-alpha.9
mindfn Sep 26, 2026
4e54f1d
feat(contract): freeze beta.24 shapes — row actions, data directory, …
mindfn Sep 26, 2026
7c789df
chore(plugins): bump contract 0.1.0-beta.24 / SDK 0.2.0-beta.7 and re…
mindfn Sep 26, 2026
29d82fe
fix(contract): close beta.24 review gaps
mindfn Sep 27, 2026
82ecb15
test(personal-chrome-companion): restore extension escape-hatch audit
mindfn Sep 27, 2026
a9eecab
Merge remote-tracking branch 'origin/main' into feat/f202-train-c1-pl…
mindfn Sep 27, 2026
d51a664
chore(catalog): repin consumer shrinkwraps to CI-packed contract bytes
mindfn Sep 27, 2026
aae96e0
chore(contract): finish beta.25 main sync
mindfn Sep 27, 2026
55862d3
test(loopback): derive drain deadline at execution
mindfn Sep 27, 2026
736256a
test(personal-chrome-companion): close escape-hatch audit gaps from r…
mindfn Sep 27, 2026
f2adca6
wip(personal-chrome-companion): p2a module plugin skeleton checkpoint
mindfn Sep 27, 2026
e76cd3b
feat(personal-chrome-companion): declare module plugin manifest with …
mindfn Sep 27, 2026
e692308
chore(personal-chrome-companion): pin production closure shrinkwrap
mindfn Sep 27, 2026
dc1b3f2
chore(catalog): register official.companion.personal-chrome 0.1.0-alp…
mindfn Sep 27, 2026
7ca22be
chore(release): publish personal-chrome-companion through the hardene…
mindfn Sep 27, 2026
666f7f0
test(fresh-consumer): expect module-plugin sdk dependency on personal…
mindfn Sep 27, 2026
9907d13
docs(review-notes): W2-3 p2a skeleton report for personal-chrome-comp…
mindfn Sep 27, 2026
262f721
Merge remote-tracking branch 'origin/main' into feat/f202-train-c1-pl…
mindfn Sep 27, 2026
303f0ec
ci(companion): build contract and SDK deps before companion typecheck
mindfn Sep 27, 2026
383ef60
docs(review-notes): exact-head double-green CI evidence for 303f0ec
mindfn Sep 27, 2026
6c02298
fix(sdk): carry granted module data directory
mindfn Sep 27, 2026
aef8d6a
test(personal-chrome): promote p2a real-entry probe into the package …
mindfn Sep 27, 2026
7c9c80b
feat(personal-chrome): switch the package protocol to the frozen v2 g…
mindfn Sep 28, 2026
f226c8b
feat(personal-chrome): port the Host socket client and pairing-record…
mindfn Sep 28, 2026
f638d58
feat(personal-chrome): wire the real conversation-host methods into t…
mindfn Sep 28, 2026
25a6c36
test(personal-chrome): v2 grammar tests and the real-helper seam suit…
mindfn Sep 28, 2026
33abebb
chore(catalog): refresh personal-chrome pin after p2b source changes
mindfn Sep 28, 2026
c92a8c6
chore(catalog): sync companion alpha.10 pin to immutable registry bytes
mindfn Sep 28, 2026
75481fb
Merge remote-tracking branch 'origin/main' into feat/f202-train-c1-pl…
mindfn Sep 28, 2026
7c16e03
chore(companion): bump to 0.1.0-alpha.11 and register the new catalog…
mindfn Sep 28, 2026
3fc4b0b
chore(shrinkwrap): repin train C1 consumers to merged contract bytes
mindfn Sep 28, 2026
0d30250
chore(catalog): refresh all unpublished pins after shrinkwrap repin
mindfn Sep 28, 2026
b5ad781
merge: sync upstream main through #67
mindfn Sep 28, 2026
b7a08af
test(release): reject drift of attested artifacts
mindfn Sep 28, 2026
f1e10d4
fix(catalog): build generated publish surfaces before verification
mindfn Sep 28, 2026
c53520d
chore(release): sync contract beta.26 closure
mindfn Sep 28, 2026
a17b998
fix(release): verify personal Chrome closure integrity
mindfn Sep 28, 2026
c6c3381
fix(companion): cancel in-flight host requests on stop; post-write EO…
mindfn Sep 28, 2026
00c184d
chore(catalog): refresh personal-chrome-companion alpha.0 pin after p…
mindfn Sep 28, 2026
e4b3284
fix(companion): stop race during pairing resolution; post-write inval…
mindfn Sep 28, 2026
afeaa70
chore(catalog): refresh personal-chrome-companion alpha.0 pin after R…
mindfn Sep 28, 2026
644d66a
test(release): freeze beta.26 and beta.10 identities
mindfn Sep 30, 2026
b5f218e
merge: sync upstream main through #69
mindfn Sep 30, 2026
e5ae546
chore(release): sync F317 contract and package closure
mindfn Sep 30, 2026
6fa5c46
docs(contributing): require a durable artifact toolchain
mindfn Sep 30, 2026
68f15b6
feat(personal-chrome): back off unavailable helper polls and expose c…
mindfn Sep 30, 2026
16287c4
fix(personal-chrome): expose invalid helper installation
mindfn Sep 30, 2026
847176e
chore(catalog): pin personal Chrome p2c artifact
mindfn Sep 30, 2026
16799b6
feat(personal-chrome): deliver extension and refresh installed helper…
mindfn Sep 30, 2026
a38c593
chore(catalog): pin personal Chrome delivery artifact
mindfn Sep 30, 2026
a6106da
fix(personal-chrome): commit delivery as one generation and drain acc…
mindfn Sep 30, 2026
f3de9d3
test(personal-chrome): own extension contract checks
mindfn Sep 30, 2026
7e045cd
chore(catalog): pin personal Chrome extension checks
mindfn Sep 30, 2026
2d451df
fix(gate): own Feishu identity tasks and bound transient failures
mindfn Sep 30, 2026
d91fa8e
fix(gate): preserve connector package test entrypoints
mindfn Sep 30, 2026
aaa77dd
test(gate): include deadline regressions in CI script coverage
mindfn Sep 30, 2026
2d51986
fix(genoffice): reuse verified source archives and bound downloads
mindfn Sep 30, 2026
60d3bfe
fix(release): make self-contained packing reproducible
mindfn Sep 30, 2026
7618b6d
feat(personal-chrome): restore owner-triggered title refresh
mindfn Sep 30, 2026
cdf358a
chore(catalog): pin personal-chrome alpha.1 after title-refresh build
mindfn Sep 30, 2026
6233d48
test(personal-chrome): expect alpha.1 in fresh consumer
mindfn Sep 30, 2026
03907d7
fix(f202): sync main and restore plugin Settings rows and executable …
mindfn Oct 7, 2026
03faae7
fix(catalog): order merged companion release history
mindfn Oct 7, 2026
9fcb61c
fix(verifier): validate installed closure without requiring root APIs
mindfn Oct 7, 2026
553f9e3
fix(verifier): load string root export declarations
mindfn Oct 7, 2026
9c5294b
feat(personal-chrome): add verified Settings setup runner
mindfn Oct 8, 2026
80e26fc
fix(personal-chrome): fence setup against helper startup
mindfn Oct 8, 2026
6636763
refactor(github): copy frozen GitHub business sources for C1 migration
mindfn Oct 8, 2026
394fe96
feat(github): run package-owned tracking through SDK builtin lifecycle
mindfn Oct 8, 2026
2689213
feat(github): bound repository polling and isolate triage recommendat…
mindfn Oct 8, 2026
37264aa
feat(connectors): checkpoint command parity and permission import car…
mindfn Oct 8, 2026
6dba6b3
feat(github): correlate cloud observations and recover journal projec…
mindfn Oct 8, 2026
8828223
feat(connectors): wire seven command ingress checkpoints
mindfn Oct 8, 2026
d61a6c7
test(wecom-agent): verify runtime replay and durable Host keys
mindfn Oct 8, 2026
b3906de
feat(github): compose native drafts and provider read models
mindfn Oct 8, 2026
f357dae
feat(connectors): add owner-confirmed permission recovery
mindfn Oct 8, 2026
4de5a6e
feat(connectors): complete paginated command inventory and effect fences
mindfn Oct 8, 2026
28a38cb
feat(github-operations): bound legacy metadata copy and provider brie…
mindfn Oct 8, 2026
6701a71
feat(connector): prepare unique beta.13 and alpha.3 candidates
mindfn Oct 8, 2026
c32c4cf
test(connector): exercise in-flight command revocation across seven m…
mindfn Oct 8, 2026
154f02c
refactor(github-operations): remove obsolete wait adapters and declar…
mindfn Oct 8, 2026
29259fc
feat(connectors): consume Host-authored thread navigation
mindfn Oct 8, 2026
e15bcd1
merge: integrate exact task296 SDK and connector candidate
Oct 8, 2026
bee998f
build(github): pin alpha.1 to accepted SDK beta.13 closure
Oct 8, 2026
7b308cf
fix(artifacts): project declaration-free dependency runtime closures
mindfn Oct 8, 2026
10b8792
test: preserve retained SDK identities in fresh consumers
Oct 8, 2026
bd9fe72
merge: integrate exact task296 runtime projection
mindfn Oct 9, 2026
473783d
build(catalog): pin accepted connector alpha.3 candidates
mindfn Oct 9, 2026
754ff79
feat(github): stage legacy repository progress before registration
mindfn Oct 9, 2026
de917e8
fix(sdk): enforce durable connector group bound and explicit owner re…
mindfn Oct 9, 2026
c23e87d
refactor(github): remove inactive Host admission helper copies
mindfn Oct 9, 2026
e607538
merge: integrate reviewed task296 beta.14 and alpha.4 graph
mindfn Oct 9, 2026
53e80f5
build(github): bind alpha.2 to reviewed SDK beta.14
mindfn Oct 9, 2026
3b640d7
feat(github): preserve settled issue delivery progress on migration
mindfn Oct 9, 2026
d38648d
fix(github): authorize registration through existing Host binding
mindfn Oct 9, 2026
2878c98
feat(plugins): reconcile Companion work and C1 shared graph
mindfn Oct 9, 2026
18f8240
merge: consume reviewed C1 beta30 beta15 connector alpha5 graph
mindfn Oct 9, 2026
6dbd12b
merge: integrate main Companion work controls with C1 candidate graph
mindfn Oct 9, 2026
0ec567c
fix(catalog): validate retained SDKs against authenticated contract c…
mindfn Oct 9, 2026
c4316f3
feat(github): preserve bounded legacy provider history metadata
mindfn Oct 9, 2026
6a238f1
fix(github): preserve legacy history subject case during import
mindfn Oct 9, 2026
e95b014
refactor(github): remove inactive Host decision read-model copies
mindfn Oct 9, 2026
f639add
fix(github): preserve dismissed review observations across stale polls
mindfn Oct 9, 2026
19b2822
docs(github): classify remaining source migration dispositions
mindfn Oct 9, 2026
6a1fca2
docs(github): distinguish runtime reachability from legacy test imports
mindfn Oct 9, 2026
664f667
fix(github): retain page-bound repository comment reads
mindfn Oct 9, 2026
28f43c4
feat(github): add bounded exact-trigger provider observation
mindfn Oct 9, 2026
30ec279
feat(github): publish complete PR observation generations
mindfn Oct 9, 2026
4ecbb07
fix(github): resume PR review pages and retain provider activity
mindfn Oct 9, 2026
d1a6bfb
fix(github-operations): restart incompatible PR index drafts
mindfn Oct 9, 2026
5697baf
refactor(github): move typed wait business source into plugin
mindfn Oct 9, 2026
a3c02dd
refactor(github): adapt typed waits to plugin storage and native MCP
mindfn Oct 9, 2026
7d1f25a
fix(github): retain wait identity and atomic registration replay
mindfn Oct 9, 2026
ddc1d53
feat(sdk): connect native MCP to active module actions
mindfn Oct 9, 2026
78636f2
feat(github): compose durable typed wait provider runtime
mindfn Oct 9, 2026
8b8aad9
feat(github): wire native tracking and neutral wait projection
mindfn Oct 9, 2026
0b896f4
feat(contract): declare native MCP module actions
mindfn Oct 9, 2026
74e16cd
fix(github): use atomic wait projection and native MCP actions
mindfn Oct 9, 2026
6ad7bce
fix(contract): close native MCP actions to method-only entries
mindfn Oct 9, 2026
1428f82
feat(github): prepare native MCP alpha.15 install artifacts
mindfn Oct 9, 2026
6c55d53
refactor(github): move remaining community backend from pinned main
mindfn Oct 10, 2026
af0c800
refactor(github): adapt migrated Community sources to plugin ports
mindfn Oct 10, 2026
5d1e9f8
feat(github): compose embedded Community routes with guarded storage
mindfn Oct 10, 2026
e4385f7
fix(github): persist narrator delivery before sending
mindfn Oct 10, 2026
39fea6d
fix(github): authorize case reports and reconcile draft publication
mindfn Oct 10, 2026
e59c97c
fix(github): reject late reports after terminal transitions
mindfn Oct 10, 2026
64216af
feat(contract): support unambiguous dynamic webhook paths and PATCH
mindfn Oct 10, 2026
f5f6278
fix(github): separate draft ID routes from static actions
mindfn Oct 10, 2026
16eeef7
feat(github): read exact provider review evidence
mindfn Oct 10, 2026
5c6f463
fix(github): route decision actions through plugin forwarding
mindfn Oct 10, 2026
5a1cf50
fix(github): share Community projection ordering and bind SDK threads
mindfn Oct 10, 2026
c01f8cf
fix(github): validate thread targets using metadata grants
mindfn Oct 10, 2026
4e58c5d
fix(github): authorize stable community thread point lookup
mindfn Oct 10, 2026
d469b0e
feat(plugins): add private custody verifier contract and SDK
mindfn Oct 10, 2026
76090d8
fix(sdk): isolate predicate verifier context by phase
mindfn Oct 10, 2026
a36e45f
feat(github): wire private review predicate verification
mindfn Oct 10, 2026
0676d21
feat(github): persist routed case collection in plugin storage
mindfn Oct 10, 2026
6346dde
fix(github): reconcile collection from committed route generations
mindfn Oct 10, 2026
d2bf6c3
feat(github): connect bounded Community sync readers
mindfn Oct 10, 2026
59bccd5
fix(github): recheck repository policy after every page
mindfn Oct 10, 2026
b47b0b7
feat(plugin): add scoped deployment and frustration source ports
mindfn Oct 10, 2026
86254b9
feat(github): recover durable drafts across source link failures
mindfn Oct 10, 2026
536c71e
fix(github): retain publication drafts in source recovery
mindfn Oct 10, 2026
7eda838
feat(github): compose Community owner HTTP module routes
mindfn Oct 10, 2026
840a871
feat(github): expose authenticated Community native callbacks
mindfn Oct 10, 2026
9109c1e
feat(github): compose durable manual narrator dispatch
mindfn Oct 10, 2026
4cb6319
fix(github): frame narrator context as untrusted data
mindfn Oct 10, 2026
cdb6e3d
feat(github): bind native review submissions to durable custody intents
mindfn Oct 10, 2026
f268f54
fix(github): preserve canonical verdict on completed lease replay
mindfn Oct 10, 2026
8f890a2
fix(github): isolate CI diagnostics within typed PR polling
mindfn Oct 10, 2026
5789dfa
fix(github): close alpha16 production dependency archive
mindfn Oct 10, 2026
0bab683
docs(github): record approved archive and remaining Host acceptance
mindfn Oct 10, 2026
5dd199e
fix(github): consume declared webhook request envelopes
mindfn Oct 10, 2026
4952f27
feat(collective): move immutable backend business source
mindfn Oct 10, 2026
d844a07
feat(collective): compose moved backend through module lifecycle
mindfn Oct 10, 2026
6195106
docs(collective): classify private module checkpoint
mindfn Oct 10, 2026
832291b
fix(collective): keep migrated business behind module entrypoint
mindfn Oct 10, 2026
87ba2b8
feat(collective): bind Host transport and durable local recovery
mindfn Oct 10, 2026
dde3848
docs(f202): reconcile repository directory acceptance gaps
mindfn Oct 11, 2026
0428276
docs(f202): record fresh builds and exact consumer pin gaps
mindfn Oct 11, 2026
1a5d534
test(f202): guard contribution runtime entrypoint census
mindfn Oct 11, 2026
8fd5081
docs(f202): ground meeting redesign in current activation seam
mindfn Oct 11, 2026
30e4afd
feat(meeting): retain source records and uncertain notification intent
mindfn Oct 11, 2026
46e4365
fix(meeting): bind persisted notification intent and frame provider t…
mindfn Oct 11, 2026
7b206e8
fix(collective): request only the used data directory capability
mindfn Oct 12, 2026
076a5fb
fix(collective): expose Service status as a clickable operation
mindfn Oct 12, 2026
9e57b12
fix(ci): declare root loader and update Chrome Host fixtures
mindfn Oct 12, 2026
549b8c5
fix(collective): return visible and honest Service status
mindfn Oct 12, 2026
f0e8972
test(wechat-reader): await module input rejection
mindfn Oct 12, 2026
ec11f55
test(github): preserve the accepted dependency graph at aggregate HEAD
mindfn Oct 12, 2026
49d6244
test(consumer): install each accepted SDK graph without substitution
mindfn Oct 12, 2026
8b3225f
test(catalog): share all authenticated retained SDK graphs
mindfn Oct 12, 2026
d8f88fd
chore(chrome): preserve alpha.3 and identify consent documentation as…
mindfn Oct 12, 2026
4e167c2
chore(meeting-intake): reserve alpha.11 for the unpublished source ca…
mindfn Oct 12, 2026
4759db7
feat(collective): restore authenticated owner control paths
mindfn Oct 12, 2026
edc9439
build(plugins): prepare exact retained SDK directory graphs
mindfn Oct 12, 2026
10243ac
fix(build): confine retained directory preparation writes
mindfn Oct 12, 2026
fd550cd
feat(sdk): mirror strict owner thread Host port
Oct 12, 2026
94f7aa3
feat(sdk): mirror public participant roster Host port
Oct 12, 2026
21f981b
refactor(collective): move original participation reconciler
Oct 12, 2026
5e47961
feat(collective): pair participation reconciliation with strict Host …
Oct 12, 2026
887bb9b
feat(sdk): mirror exact source facts and native context ports
mindfn Oct 12, 2026
ba01ef2
merge: reconcile Train C1 with main meeting presentation
mindfn Oct 12, 2026
7d5faa1
merge: reconcile Train C1 with desktop bridge 1.4
mindfn Oct 12, 2026
5cd293f
merge: reconcile latest Companion status presentation
mindfn Oct 12, 2026
258f49c
fix(companion): retain main browser CI coverage
mindfn Oct 12, 2026
a033283
feat(sdk): preserve private public invocation verifier slot
mindfn Oct 13, 2026
c547b6a
feat(sdk): mirror Host public invocation admission port
mindfn Oct 13, 2026
67810c0
refactor(collective): move original context reference helper
mindfn Oct 13, 2026
11572a1
feat(collective): keep native reference keys in private package data
mindfn Oct 13, 2026
af5109e
fix(collective): refuse special key files without blocking
mindfn Oct 13, 2026
42441c6
refactor(collective): move original ingress routing helpers
mindfn Oct 13, 2026
e0be418
feat(collective): bind ordinary public sources to existing inbox custody
mindfn Oct 13, 2026
977bb9e
fix(personal-chrome): ship direct contract runtime dependency
mindfn Oct 13, 2026
4a5af67
fix(collective): retain local echo preflight before public admission
mindfn Oct 13, 2026
29611af
test: supply Chrome direct retained contract archive
mindfn Oct 13, 2026
91d04ee
test: build Chrome before targeted fresh-consumer pack
mindfn Oct 13, 2026
91767f3
refactor: move Collective public Work source reference helper
mindfn Oct 13, 2026
692ef87
feat: pair ordinary Collective native context and replies
mindfn Oct 13, 2026
6f8acc1
test: remove public native fixture trailing blank line
mindfn Oct 13, 2026
8f8b86c
feat(collective): activate ordinary native consumers and owner entry …
mindfn Oct 13, 2026
67a05cc
fix(collective): parse the Host envelope for owner connection rows
mindfn Oct 13, 2026
d450f9b
feat(meeting): activate owned records and installed MCP module
mindfn Oct 13, 2026
126a1b9
fix(meeting): retain fresh account truth and declare notification ide…
mindfn Oct 13, 2026
50f2adb
fix(pack): materialize bundled dependencies from the frozen lock
mindfn Oct 13, 2026
c507e44
test(meeting): consume only the bundled archive offline
mindfn Oct 13, 2026
c3ea18a
fix(collective): use one named send wake for ordinary requests
mindfn Oct 13, 2026
1b87846
fix(collective): project Host send receipt into routing custody
mindfn Oct 13, 2026
582740f
fix(catalog): declare the original C1 initial plugin selection
mindfn Oct 13, 2026
828a619
feat(collective): connect the original public Work proposal action
mindfn Oct 13, 2026
78f18e9
fix(collective): preserve existing source permissions on module upgrade
mindfn Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
298 changes: 159 additions & 139 deletions .github/workflows/contract-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,26 @@ on:
- 'packages/plugin-contract/**'
- 'packages/plugin-sdk/**'
- 'packages/companion/**'
- 'packages/connector-dingtalk/**'
- 'packages/connector-feishu/**'
- 'packages/connector-telegram/**'
- 'packages/connector-wecom-agent/**'
- 'packages/connector-wecom-bot/**'
- 'packages/connector-weixin/**'
- 'packages/connector-xiaoyi/**'
- 'packages/enterprise-workflow/**'
- 'packages/personal-chrome-companion/**'
- 'packages/feishu-meeting-intake/**'
- 'packages/video-analysis/**'
- 'packages/video-generation/**'
- 'packages/wechat-visible-reader/**'
- 'packages/weixin-mp/**'
- 'packages/xiangqi/**'
- 'packages/genoffice-docx/**'
- 'packages/github-operations/**'
- 'packages/stackchan/**'
- 'catalog/**'
- 'scripts/fresh-consumer-install.test.mjs'
- 'scripts/desktop-window-consumer.test.mjs'
- 'scripts/catalog-check.mjs'
- 'scripts/catalog-static-package*'
- 'scripts/pack-publish-artifact.mjs'
- 'scripts/**'
- 'package.json'
- '.npmrc'
- 'pnpm-lock.yaml'
Expand All @@ -38,11 +48,33 @@ jobs:
validate:
name: Typecheck + Conformance
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}

# B1 class: a run must test the PR's live head. A push to the wrong
# remote (or a head advance after checkout) otherwise leaves a stale
# green run readable as "the new head passed".
- name: Assert tested HEAD is the PR's live head
if: github.event_name == 'pull_request'
env:
GH_TOKEN: ${{ github.token }}
run: |
checked_out="$(git rev-parse HEAD)"
expected="${{ github.event.pull_request.head.sha }}"
if [ "$checked_out" != "$expected" ]; then
echo "checkout mismatch: git rev-parse HEAD=$checked_out but PR head is $expected" >&2
exit 1
fi
node scripts/assert-pr-head.mjs \
"${{ github.repository }}" \
"${{ github.event.pull_request.number }}" \
"$expected"

- uses: pnpm/action-setup@v4
with:
version: 9
Expand All @@ -52,89 +84,24 @@ jobs:
node-version: ${{ env.ARTIFACT_NODE_VERSION }}
cache: 'pnpm'

- name: Verify artifact toolchain
run: node packages/plugin-contract/scripts/verify-artifact-toolchain.mjs

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Generated contract freshness
run: pnpm --filter @clowder-ai/plugin-contract generate:check

- name: Typecheck
run: pnpm --filter @clowder-ai/plugin-contract typecheck

- name: Unit tests
run: pnpm --filter @clowder-ai/plugin-contract test

- name: Build
run: pnpm --filter @clowder-ai/plugin-contract build

- name: SDK typecheck
run: pnpm --filter @clowder-ai/plugin-sdk typecheck

- name: SDK unit tests
run: pnpm --filter @clowder-ai/plugin-sdk test

- name: SDK build
run: pnpm --filter @clowder-ai/plugin-sdk build

- name: Desktop window packed consumer
run: node --test scripts/desktop-window-consumer.test.mjs

- name: Companion package consumer
run: |
pnpm --filter @clowder-ai/companion build
pnpm --filter @clowder-ai/companion test
pnpm --filter @clowder-ai/companion lint
# Local gate replica: `pnpm gate:ci` (scripts/ci-gate.mjs) runs the
# artifact-toolchain check, install, and every check through pack:gate
# in this job's former order. The workflow delegates to the script so
# local pre-push runs and CI cannot drift apart; edit steps there.
- name: Local gate (toolchain to pack:gate)
run: pnpm gate:ci

- name: Companion browser layout contract
run: pnpm --filter @clowder-ai/companion exec playwright install --with-deps chromium && pnpm --filter @clowder-ai/companion test:browser

- name: Feishu intake typecheck
run: pnpm --filter @clowder-ai/feishu-meeting-intake typecheck

- name: Feishu intake tests
run: pnpm --filter @clowder-ai/feishu-meeting-intake test

- name: Feishu intake lint
run: pnpm --filter @clowder-ai/feishu-meeting-intake lint

- name: Feishu intake build
run: pnpm --filter @clowder-ai/feishu-meeting-intake build

- name: Video analysis typecheck
run: pnpm --filter @clowder-ai/video-analysis typecheck

- name: Video analysis tests
run: pnpm --filter @clowder-ai/video-analysis test

- name: Video analysis lint
run: pnpm --filter @clowder-ai/video-analysis lint

- name: Video analysis build
run: pnpm --filter @clowder-ai/video-analysis build

# gate:ci does not cover xiangqi (playwright browser journey is kept
# as an explicit step, mirroring main).
- name: Xiangqi package tests and build
run: pnpm --filter @clowder-ai/xiangqi test && pnpm --filter @clowder-ai/xiangqi lint && pnpm --filter @clowder-ai/xiangqi build

- name: Xiangqi browser journey
run: pnpm --filter @clowder-ai/xiangqi test:browser

- name: GenOffice typecheck and tests
run: |
pnpm --filter @clowder-ai/genoffice-docx typecheck
pnpm --filter @clowder-ai/genoffice-docx test

- name: Git guards
run: pnpm test:guards

- name: Fresh consumer install
run: pnpm test:fresh-consumer

- name: Machine catalog
run: pnpm catalog:check

- name: Loopback fixture typecheck
run: pnpm --filter @clowder-ai/loopback-fixture-plugin typecheck

Expand All @@ -151,70 +118,14 @@ jobs:
run: pnpm --filter @clowder-ai/plugin-contract conformance

- name: Capture exact-head pack evidence
working-directory: packages/plugin-contract
env:
EXPECTED_HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
PACK_EVIDENCE_PATH: ${{ runner.temp }}/plugin-contract-pack-evidence.json
run: |
set -euo pipefail
ACTUAL_HEAD_SHA=$(git rev-parse HEAD)
export ACTUAL_HEAD_SHA
if [[ "$ACTUAL_HEAD_SHA" != "$EXPECTED_HEAD_SHA" ]]; then
echo "checkout HEAD mismatch: $ACTUAL_HEAD_SHA != $EXPECTED_HEAD_SHA" >&2
exit 1
fi
if [[ -n "$(git status --porcelain --untracked-files=no)" ]]; then
echo "tracked files changed before pack evidence capture" >&2
git status --short >&2
exit 1
fi

PACK_JSON_PATH="$RUNNER_TEMP/plugin-contract-pack.json"
export PACK_JSON_PATH
npm pack --json --ignore-scripts --pack-destination "$RUNNER_TEMP" > "$PACK_JSON_PATH"
node --input-type=module <<'NODE'
import { execFileSync } from 'node:child_process';
import { appendFileSync, readFileSync, writeFileSync } from 'node:fs';

const [artifact] = JSON.parse(readFileSync(process.env.PACK_JSON_PATH, 'utf8'));
const stringFields = ['name', 'version', 'filename', 'integrity', 'shasum'];
const numberFields = ['size', 'unpackedSize'];
for (const field of stringFields) {
if (typeof artifact?.[field] !== 'string' || artifact[field].length === 0) {
throw new Error(`npm pack did not report ${field}`);
}
}
for (const field of numberFields) {
if (!Number.isFinite(artifact?.[field]) || artifact[field] <= 0) {
throw new Error(`npm pack did not report ${field}`);
}
}
if (!Array.isArray(artifact?.files) || artifact.files.length === 0) {
throw new Error('npm pack did not report files');
}
run: node scripts/capture-exact-head-pack-evidence.mjs packages/plugin-contract "$RUNNER_TEMP/plugin-contract-pack.json" "$RUNNER_TEMP/plugin-contract-pack-evidence.json" "$EXPECTED_HEAD_SHA"

const evidence = {
headSha: process.env.ACTUAL_HEAD_SHA,
name: artifact.name,
version: artifact.version,
filename: artifact.filename,
integrity: artifact.integrity,
shasum: artifact.shasum,
size: artifact.size,
unpackedSize: artifact.unpackedSize,
entryCount: artifact.files?.length,
toolchain: {
node: process.version,
npm: execFileSync('npm', ['--version'], { encoding: 'utf8' }).trim(),
zlib: process.versions.zlib,
},
};
writeFileSync(process.env.PACK_EVIDENCE_PATH, `${JSON.stringify(evidence, null, 2)}\n`);
appendFileSync(
process.env.GITHUB_STEP_SUMMARY,
`### Exact-head pack evidence\n\n\`\`\`json\n${JSON.stringify(evidence, null, 2)}\n\`\`\`\n`,
);
NODE
- name: Capture exact-head SDK pack evidence
env:
EXPECTED_HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: node scripts/capture-exact-head-pack-evidence.mjs packages/plugin-sdk "$RUNNER_TEMP/plugin-sdk-pack.json" "$RUNNER_TEMP/plugin-sdk-pack-evidence.json" "$EXPECTED_HEAD_SHA"

- name: Verify immutable published package identity
working-directory: packages/plugin-contract
Expand Down Expand Up @@ -282,6 +193,13 @@ jobs:
path: ${{ runner.temp }}/plugin-contract-pack-evidence.json
if-no-files-found: error

- name: Upload exact-head SDK pack evidence
uses: actions/upload-artifact@v4
with:
name: plugin-sdk-pack-evidence-${{ github.event.pull_request.head.sha || github.sha }}
path: ${{ runner.temp }}/plugin-sdk-pack-evidence.json
if-no-files-found: error

publish:
name: Publish to npm
needs: validate
Expand Down Expand Up @@ -315,6 +233,27 @@ jobs:
- name: Build SDK package
run: pnpm --filter @clowder-ai/plugin-sdk build

- name: Build connector packages
run: |
set -euo pipefail
for package in \
@clowder-ai/connector-telegram \
@clowder-ai/connector-dingtalk \
@clowder-ai/connector-feishu \
@clowder-ai/connector-wecom-agent \
@clowder-ai/connector-wecom-bot \
@clowder-ai/connector-weixin \
@clowder-ai/connector-xiaoyi
do
pnpm --filter "$package" build
done

- name: Build enterprise workflow package
run: pnpm --filter @clowder-ai/enterprise-workflow build

- name: Build personal Chrome companion package
run: pnpm --filter @clowder-ai/personal-chrome-companion build

- name: Build companion package
run: pnpm --filter @clowder-ai/companion build

Expand All @@ -324,6 +263,15 @@ jobs:
- name: Build video analysis package
run: pnpm --filter @clowder-ai/video-analysis build

- name: Build video generation package
run: pnpm --filter @clowder-ai/video-generation build

- name: Build Weixin MP package
run: pnpm --filter @clowder-ai/weixin-mp build

- name: Build WeChat visible reader package
run: pnpm --filter @clowder-ai/wechat-visible-reader build

- name: Build and verify frozen GenOffice renderer
run: |
pnpm --filter @clowder-ai/genoffice-docx build:renderer
Expand All @@ -341,6 +289,60 @@ jobs:
package-directory: packages/plugin-sdk
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish enterprise workflow prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/enterprise-workflow
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish personal Chrome companion prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/personal-chrome-companion
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish Telegram connector prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/connector-telegram
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish DingTalk connector prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/connector-dingtalk
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish Feishu connector prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/connector-feishu
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish WeCom agent connector prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/connector-wecom-agent
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish WeCom bot connector prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/connector-wecom-bot
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish WeChat Personal connector prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/connector-weixin
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish XiaoYi connector prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/connector-xiaoyi
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish companion prerelease
uses: ./.github/actions/publish-prerelease
with:
Expand All @@ -353,6 +355,24 @@ jobs:
package-directory: packages/video-analysis
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish video generation prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/video-generation
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish Weixin MP prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/weixin-mp
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish WeChat visible reader prerelease
uses: ./.github/actions/publish-prerelease
with:
package-directory: packages/wechat-visible-reader
npm-token: ${{ secrets.NPM_TOKEN }}

- name: Publish GenOffice prerelease
uses: ./.github/actions/publish-prerelease
with:
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/personal-chrome-companion-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile

# Companion typecheck resolves @clowder-ai/plugin-contract / plugin-sdk
# through workspace links whose exports point at dist/*.d.ts; a fresh
# checkout has no dist until the dependencies are built. Mirrors the
# build-deps-first pattern in packages/feishu-meeting-intake.
- name: Build contract and SDK dependencies
run: pnpm --filter @clowder-ai/plugin-contract build && pnpm --filter @clowder-ai/plugin-sdk build

- name: Companion typecheck
run: pnpm --filter @clowder-ai/personal-chrome-companion typecheck

Expand Down
Loading
Loading