create-kumiko-app 0.4.98 → 0.4.100

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "source": "samples/apps/use-all-bundled APP_FEATURES (composeFeatures includeBundled)",
3
- "featureCount": 49,
3
+ "featureCount": 52,
4
4
  "features": [
5
5
  {
6
6
  "name": "admin-shell",
@@ -689,6 +689,98 @@
689
689
  "secrets": [],
690
690
  "writeHandlers": []
691
691
  },
692
+ {
693
+ "name": "inbound-mail-foundation",
694
+ "description": "Plugin host for inbound e-mail (inbox federation) — provider plugins (inbound-provider-imap, later M365 Graph / Gmail REST) register at the `inboundMailProvider` extension point with verify/fetch and optional oauth/watch (live push). The foundation owns three event-sourced streams (mail-account lifecycle, inbound-message with exactly-once ingest via deterministic aggregate ids, mail-thread rollup) and their projections `read_mail_accounts`/`read_inbound_messages`/`read_mail_threads`; PII fields are envelope-encrypted per tenant subject key before every append (crypto-shredding on tenant destroy). Wire `createInboundMailConnectRoutes` (OAuth connect + anonymous callback outside /api) and `createInboundMailSupervisor` (IDLE watch with backoff + reconciliation poll) in bin/server.ts. Consume `inbound-mail-foundation:event:inbound-message-received` from app features to attach business processes.",
695
+ "toggleableDefault": null,
696
+ "requires": [
697
+ "tenant-lifecycle"
698
+ ],
699
+ "optionalRequires": [],
700
+ "configReads": [],
701
+ "exposesApis": [],
702
+ "usesApis": [],
703
+ "extensionsUsed": [
704
+ {
705
+ "extensionName": "tenantData",
706
+ "entityName": "mail-account"
707
+ },
708
+ {
709
+ "extensionName": "tenantData",
710
+ "entityName": "inbound-message"
711
+ },
712
+ {
713
+ "extensionName": "tenantData",
714
+ "entityName": "mail-thread"
715
+ }
716
+ ],
717
+ "configKeys": [],
718
+ "secrets": [],
719
+ "writeHandlers": [
720
+ "inbound-mail-foundation:write:connect-account",
721
+ "inbound-mail-foundation:write:disconnect-account",
722
+ "inbound-mail-foundation:write:ingest-message",
723
+ "inbound-mail-foundation:write:update-account"
724
+ ],
725
+ "uiHints": {
726
+ "displayLabel": "Inbound Mail · Foundation",
727
+ "category": "notifications",
728
+ "recommended": false
729
+ }
730
+ },
731
+ {
732
+ "name": "inbound-provider-imap",
733
+ "description": "Registers the `\"imap\"` provider for `inbound-mail-foundation` using imapflow — password/app-password auth covers classic IMAP hosts without any OAuth (plus an XOAUTH2 fallback consuming an access token from the secret slot). Incremental sync via a UIDVALIDITY:lastUid cursor (UIDVALIDITY change triggers a cursor-invalid full resync), initial backfill bounded by the foundation backfill window, and live push via IMAP IDLE for the watch supervisor. Store the per-account connection JSON (host/port/secure/user/password) in the account credential secret slot before the first sync.",
734
+ "toggleableDefault": null,
735
+ "requires": [
736
+ "inbound-mail-foundation",
737
+ "secrets"
738
+ ],
739
+ "optionalRequires": [],
740
+ "configReads": [],
741
+ "exposesApis": [],
742
+ "usesApis": [],
743
+ "extensionsUsed": [
744
+ {
745
+ "extensionName": "inboundMailProvider",
746
+ "entityName": "imap"
747
+ }
748
+ ],
749
+ "configKeys": [],
750
+ "secrets": [],
751
+ "writeHandlers": [],
752
+ "uiHints": {
753
+ "displayLabel": "Inbound Mail · IMAP",
754
+ "category": "notifications",
755
+ "recommended": false
756
+ }
757
+ },
758
+ {
759
+ "name": "inbound-provider-inmemory",
760
+ "description": "Registers a scriptable in-process `\"inmemory\"` provider for `inbound-mail-foundation`. Seed messages with `seedInboundMessage(accountId, msg)` — an active watch pushes them immediately (IDLE simulation) and the cursor-based `fetch` re-delivers them on the reconciliation path, exercising the foundation dedup guarantee. Error injection via `failNextFetchWith`/`failNextVerifyWith`/`emitWatchError`; reset state with `resetInboundInMemory()`. For tests, demos and sample apps — not for production.",
761
+ "toggleableDefault": null,
762
+ "requires": [
763
+ "inbound-mail-foundation"
764
+ ],
765
+ "optionalRequires": [],
766
+ "configReads": [],
767
+ "exposesApis": [],
768
+ "usesApis": [],
769
+ "extensionsUsed": [
770
+ {
771
+ "extensionName": "inboundMailProvider",
772
+ "entityName": "inmemory"
773
+ }
774
+ ],
775
+ "configKeys": [],
776
+ "secrets": [],
777
+ "writeHandlers": [],
778
+ "uiHints": {
779
+ "displayLabel": "Inbound Mail · In-Memory Provider",
780
+ "category": "notifications",
781
+ "recommended": false
782
+ }
783
+ },
692
784
  {
693
785
  "name": "jobs",
694
786
  "description": "Persistence and operator tooling for background jobs registered via `r.job(...)`. Every job execution appends `run-started`, `run-completed`, and `run-failed` events to the `jobRun` aggregate stream, which two inline projections materialize into `read_job_runs` (current status + duration) and `read_job_run_logs` (per-line log rows). Exposes `jobs:write:trigger` (manual run) and `jobs:write:retry` (operator retry of a failed run), plus `jobs:query:list` and `jobs:query:details` for the operator UI.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-kumiko-app",
3
- "version": "0.4.98",
3
+ "version": "0.4.100",
4
4
  "description": "`bun create kumiko-app <name>` — scaffold a new Kumiko app with an interactive feature picker.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -30,8 +30,8 @@
30
30
  "vendor:manifest": "bun run scripts/vendor-manifest.ts"
31
31
  },
32
32
  "dependencies": {
33
- "@cosmicdrift/kumiko-dev-server": "0.141.0",
34
- "@cosmicdrift/kumiko-framework": "0.141.0",
33
+ "@cosmicdrift/kumiko-dev-server": "0.143.0",
34
+ "@cosmicdrift/kumiko-framework": "0.143.0",
35
35
  "@inquirer/core": "^10.0.0",
36
36
  "@inquirer/prompts": "^7.4.0"
37
37
  },