@a-company/paradigm 5.38.0 → 6.0.2
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.
- package/dist/{accept-orchestration-OATWIRHP.js → accept-orchestration-QQISPINV.js} +1 -1
- package/dist/add-UOR4INIV.js +8 -0
- package/dist/{agent-loader-RIVI6QPP.js → agent-loader-2WJHD46U.js} +1 -1
- package/dist/{agent-loader-RJRVO5GQ.js → agent-loader-YKS2PQWO.js} +1 -1
- package/dist/{ambient-76YMUA5Q.js → ambient-BE3SQXNN.js} +1 -1
- package/dist/{ambient-WTLYUAQM.js → ambient-NVKQCW2A.js} +12 -12
- package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
- package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
- package/dist/{chunk-5QOCKWK5.js → chunk-4PSD5R7N.js} +2 -2
- package/dist/{chunk-HOBHJPTL.js → chunk-6SKSV5B2.js} +1 -1
- package/dist/{chunk-4L7665QV.js → chunk-FEYOQMZ5.js} +1 -1
- package/dist/{chunk-NEJ4ZLCY.js → chunk-GAFKOFAV.js} +1 -1
- package/dist/chunk-GRZQIKST.js +2 -0
- package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
- package/dist/{chunk-4VKSEOXZ.js → chunk-LPBCQM5Y.js} +3 -3
- package/dist/{chunk-74SGKSRQ.js → chunk-M2HKWR25.js} +1 -1
- package/dist/{chunk-BOYQAMGC.js → chunk-M3PPXJU4.js} +1 -1
- package/dist/chunk-PHEX6LU4.js +111 -0
- package/dist/chunk-Q527BPUF.js +2 -0
- package/dist/chunk-R5ECMBIV.js +11 -0
- package/dist/{chunk-X3U3IGYT.js → chunk-TBWWFRL5.js} +1 -1
- package/dist/{chunk-MQIG6SMF.js → chunk-TNVWGPCE.js} +1 -1
- package/dist/chunk-TZDYIPVU.js +521 -0
- package/dist/{chunk-3XGNXXCT.js → chunk-UZ5H7K6Q.js} +1 -1
- package/dist/chunk-VIG5LSGZ.js +2 -0
- package/dist/chunk-VNIX5KBT.js +3 -0
- package/dist/{chunk-AGFPVSX5.js → chunk-VXIIVMTM.js} +1 -1
- package/dist/{chunk-ORDKEGII.js → chunk-WESTEMIM.js} +1 -1
- package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
- package/dist/chunk-Z5QW6USC.js +2 -0
- package/dist/{compliance-D7GD6ZYC.js → compliance-BNFWQPKM.js} +1 -1
- package/dist/config-schema-FLHRVZMI.js +2 -0
- package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
- package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
- package/dist/decision-loader-HELL2AMX.js +2 -0
- package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
- package/dist/{diff-YGHBIJY5.js → diff-MF55KQZH.js} +1 -1
- package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
- package/dist/{docs-USDAF26F.js → docs-O37YLLRN.js} +1 -1
- package/dist/doctor-IG5XM4C4.js +2 -0
- package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
- package/dist/{flow-FVZR3YJ4.js → flow-BGXOVE2V.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/init-M44SO65G.js +2 -0
- package/dist/{init-XYB62Q3X.js → init-V4KSEKPK.js} +1 -1
- package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
- package/dist/list-CFHINXIS.js +12 -0
- package/dist/lore-loader-D2ISOASW.js +2 -0
- package/dist/lore-loader-PXFKMKAN.js +2 -0
- package/dist/mcp.js +4 -4
- package/dist/metrics-UESGUHTA.js +2 -0
- package/dist/migrate-assessments-YSITX7KM.js +4 -0
- package/dist/migrate-decisions-NPLQOEEH.js +6 -0
- package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
- package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-QPZJH6XO.js} +1 -1
- package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
- package/dist/{orchestrate-M5PBZBJQ.js → orchestrate-RID7HHHH.js} +1 -1
- package/dist/{platform-server-DNAMH4YI.js → platform-server-UD45NTGV.js} +1 -1
- package/dist/{portal-check-ZMLVBIGW.js → portal-check-DV2VSJ5E.js} +1 -1
- package/dist/portal-compliance-JONQ4SOP.js +2 -0
- package/dist/{probe-3FTG6LYO.js → probe-5HAXULAD.js} +1 -1
- package/dist/{providers-AWA7WLLM.js → providers-4PXMWA7V.js} +1 -1
- package/dist/quiz-WYIZJG5K.js +10 -0
- package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
- package/dist/reindex-FWPD2VGM.js +2 -0
- package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
- package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
- package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
- package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
- package/dist/{serve-U47GULB6.js → serve-MO35XIZE.js} +1 -1
- package/dist/serve-OQYUO7CR.js +12 -0
- package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
- package/dist/server-FGUL2FWQ.js +7 -0
- package/dist/session-tracker-KGORN6B5.js +2 -0
- package/dist/{session-work-log-PAKXOFGL.js → session-work-log-4IEVE4KK.js} +1 -1
- package/dist/{session-work-log-ZP45TREI.js → session-work-log-EE4UIZ33.js} +1 -1
- package/dist/{setup-FEWSYS3Y.js → setup-ZSEC72BS.js} +1 -1
- package/dist/{shift-PC6C7NUX.js → shift-TVNY2CQF.js} +6 -6
- package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
- package/dist/show-WVHAL4VU.js +7 -0
- package/dist/{spawn-M5BAV252.js → spawn-UH5RENSE.js} +1 -1
- package/dist/status-S7Z5FVIE.js +6 -0
- package/dist/{summary-PYTEIJ4U.js → summary-WLI3NF4G.js} +2 -2
- package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
- package/dist/sync-55U6QPIA.js +2 -0
- package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
- package/dist/{team-PDK64JXI.js → team-MGT66HZQ.js} +1 -1
- package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
- package/dist/tools-QJHAVYI6.js +2 -0
- package/dist/university-content/notes/N-para-001-build-something.md +126 -0
- package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
- package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
- package/dist/university-content/notes/N-para-101-component-types.md +99 -0
- package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
- package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
- package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
- package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
- package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
- package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
- package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
- package/dist/university-content/notes/N-para-101-welcome.md +51 -0
- package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
- package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
- package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
- package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
- package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
- package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
- package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
- package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
- package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
- package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
- package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
- package/dist/university-content/notes/N-para-301-context-management.md +53 -0
- package/dist/university-content/notes/N-para-301-decisions.md +99 -0
- package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
- package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
- package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
- package/dist/university-content/notes/N-para-301-history-system.md +42 -0
- package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
- package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
- package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
- package/dist/university-content/notes/N-para-301-protocols.md +113 -0
- package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
- package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
- package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
- package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
- package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
- package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
- package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
- package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
- package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
- package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
- package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
- package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
- package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
- package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
- package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
- package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
- package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
- package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
- package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
- package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
- package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
- package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
- package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
- package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
- package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
- package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
- package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
- package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
- package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
- package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
- package/dist/university-content/notes/N-para-501-task-management.md +100 -0
- package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
- package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
- package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
- package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
- package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
- package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
- package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
- package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
- package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
- package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
- package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
- package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
- package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
- package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
- package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
- package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
- package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
- package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
- package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
- package/dist/university-content/paths/LP-para-001.yaml +29 -0
- package/dist/university-content/paths/LP-para-101.yaml +59 -0
- package/dist/university-content/paths/LP-para-201.yaml +69 -0
- package/dist/university-content/paths/LP-para-301.yaml +84 -0
- package/dist/university-content/paths/LP-para-401.yaml +74 -0
- package/dist/university-content/paths/LP-para-501.yaml +89 -0
- package/dist/university-content/paths/LP-para-601.yaml +59 -0
- package/dist/university-content/paths/LP-para-701.yaml +64 -0
- package/dist/university-content/quizzes/Q-para-001-build-something.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-001-meet-the-team.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-001-shift-setup.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-101-component-types.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-101-first-steps.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-five-symbols.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-101-paradigm-logger.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-portal-yaml.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-project-structure.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-101-purpose-files.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-tags-and-classification.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-welcome.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-architecture-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-aspect-graph.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-201-aspects-and-anchors.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-component-patterns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-cross-cutting-concerns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-disciplines.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-flows-deep-dive.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-gates-deep-dive.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-portal-protocol.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-signal-patterns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-symbol-naming.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-context-management.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-decisions.yaml +76 -0
- package/dist/university-content/quizzes/Q-para-301-doctor-and-validation.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-enforcement-levels.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-fragility-tracking.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-history-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-navigation-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-operations-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-paradigm-shift.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-protocols.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-ripple-analysis.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-sentinel-observability.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-sync-and-maintenance.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-wisdom-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-agent-identity.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-agent-interop.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-401-agent-roles.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-commit-conventions.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-mastery-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-mcp-tools-overview.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-multi-agent-coordination.yaml +76 -0
- package/dist/university-content/quizzes/Q-para-401-notebooks-permissions.yaml +61 -0
- package/dist/university-content/quizzes/Q-para-401-orchestration-workflow.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-pm-governance.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-provider-cascade.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-quick-check.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
- package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
- package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
- package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
- package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
- package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
- package/dist/university-content/reference.json +2 -2
- package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
- package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
- package/dist/university-ui/index.html +1 -1
- package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
- package/dist/validate-XUQZTF3H.js +9 -0
- package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
- package/lore-ui/dist/assets/{index-Bk-K0qgN.js → index-DKhNxgtW.js} +10 -10
- package/lore-ui/dist/index.html +1 -1
- package/package.json +2 -2
- package/platform-ui/dist/assets/{AmbientSection-BYjt75R1.js → AmbientSection-CwatqcBD.js} +1 -1
- package/platform-ui/dist/assets/{CanvasSection-rKvA_vZj.js → CanvasSection-dFAthehN.js} +1 -1
- package/platform-ui/dist/assets/{DocsSection-CI9K73M-.js → DocsSection-BZ2SFJBZ.js} +1 -1
- package/platform-ui/dist/assets/{GitSection-DSGj_c6S.js → GitSection-MNNYU1tO.js} +1 -1
- package/platform-ui/dist/assets/{GraphSection-CawN7pC5.js → GraphSection-COYjb4Pt.js} +1 -1
- package/platform-ui/dist/assets/LoreSection-B0hUbfsJ.js +1 -0
- package/platform-ui/dist/assets/{SentinelSection-DNgoYMH0.js → SentinelSection-BCxW1DCp.js} +1 -1
- package/platform-ui/dist/assets/{SymphonySection-C0zfcqv3.js → SymphonySection-BsucZRqy.js} +1 -1
- package/platform-ui/dist/assets/{TeamSection-Bzd3Dt9Q.js → TeamSection-C0QNTudW.js} +1 -1
- package/platform-ui/dist/assets/{UniversitySection-tBr62R0S.js → UniversitySection-DN1-g9pw.js} +1 -1
- package/platform-ui/dist/assets/{index-BaOmyn11.js → index-DwUT8pju.js} +2 -2
- package/platform-ui/dist/index.html +1 -1
- package/dist/add-P76GEMGF.js +0 -8
- package/dist/chunk-JQKKVAAN.js +0 -2
- package/dist/chunk-NQ47TA6C.js +0 -111
- package/dist/chunk-ODVKPZZ4.js +0 -2
- package/dist/chunk-Q2J542ST.js +0 -2
- package/dist/chunk-RBLK34IA.js +0 -11
- package/dist/chunk-RN4VE6P3.js +0 -521
- package/dist/chunk-WS2N27RX.js +0 -3
- package/dist/config-schema-GUQY2QN7.js +0 -2
- package/dist/decision-loader-2XPZE4EZ.js +0 -2
- package/dist/doctor-WMVULMQD.js +0 -2
- package/dist/list-5IUGP3ZB.js +0 -7
- package/dist/lore-loader-RVQI5GXL.js +0 -2
- package/dist/lore-loader-XY5MZRR2.js +0 -2
- package/dist/migrate-assessments-GEI5WMI2.js +0 -4
- package/dist/portal-compliance-6YR27IQU.js +0 -2
- package/dist/quiz-FE5UGAY2.js +0 -10
- package/dist/reindex-I6LPAKCC.js +0 -2
- package/dist/serve-OY6XYL7F.js +0 -12
- package/dist/server-2MNROHF6.js +0 -7
- package/dist/session-tracker-MWJAJA6Z.js +0 -2
- package/dist/show-BOAVWZPZ.js +0 -7
- package/dist/status-A37ECYNJ.js +0 -6
- package/dist/sync-DLUBV5HQ.js +0 -2
- package/dist/tools-5ITPEPSV.js +0 -2
- package/dist/university-content/courses/.purpose +0 -492
- package/dist/university-content/courses/para-001.json +0 -166
- package/dist/university-content/courses/para-101.json +0 -615
- package/dist/university-content/courses/para-201.json +0 -794
- package/dist/university-content/courses/para-301.json +0 -830
- package/dist/university-content/courses/para-401.json +0 -868
- package/dist/university-content/courses/para-501.json +0 -1166
- package/dist/university-content/courses/para-601.json +0 -719
- package/dist/university-content/courses/para-701.json +0 -807
- package/dist/university-content/plsat/.purpose +0 -162
- package/dist/university-content/plsat/v2.0.json +0 -760
- package/dist/university-content/plsat/v3.0.json +0 -3453
- package/dist/validate-C6SMKGYD.js +0 -9
- package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
- /package/dist/{chunk-BV5PRPLB.js → chunk-IZSBGW6E.js} +0 -0
- /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-501-symphony-a-mail
|
|
3
|
+
title: 'Symphony: Multi-Agent Messaging with The Score'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-501
|
|
11
|
+
- the-score-is
|
|
12
|
+
- agent-identity-is
|
|
13
|
+
- mailbox-protocol-uses
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 7
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-501.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Agents Need to Talk
|
|
24
|
+
|
|
25
|
+
Until now, every Paradigm agent has worked in isolation. A Claude Code session modifying the backend has no awareness of what the session working on the frontend is doing. Two developers on the same team, each with their own AI assistant, have no way for those assistants to coordinate — even when they are working on the same project at the same time.
|
|
26
|
+
|
|
27
|
+
Symphony changes this. It is Paradigm's multi-agent, multi-human collaborative intelligence layer. And its foundation is The Score: a lightweight, file-based messaging protocol that gives every Claude Code session its own mailbox.
|
|
28
|
+
|
|
29
|
+
## The Metaphor: Email for AI Agents
|
|
30
|
+
|
|
31
|
+
The Score works exactly like email. Each agent has an identity, an inbox, and an outbox. Messages are delivered as JSONL files on the filesystem. Agents poll for new messages on a timer. There is no persistent server, no WebSocket connection, and no cloud dependency. If two agents are running on the same machine, they can message each other through nothing more than file reads and writes.
|
|
32
|
+
|
|
33
|
+
This simplicity is deliberate. The Score is the CLI-only foundation of Symphony — it works with zero dependencies beyond the Paradigm CLI. No Conductor, no Sentinel, no network configuration. The only requirement is that agents are running on the same machine (or connected via a lightweight TCP relay for cross-machine scenarios).
|
|
34
|
+
|
|
35
|
+
## Agent Identity and Discovery
|
|
36
|
+
|
|
37
|
+
Every Claude Code session that participates in The Score has a stable identity. The identity is derived from the project directory and the agent's role — for example, `a-paradigm/backend` or `a-kamiki/frontend`. This deterministic naming means the same project opened in the same context always gets the same identity, even across session restarts.
|
|
38
|
+
|
|
39
|
+
When you run `paradigm symphony join`, the CLI discovers all Claude Code sessions on the current machine and connects them into a mail network. Each session gets a mailbox directory at `~/.paradigm/score/agents/{agent-id}/` containing four files:
|
|
40
|
+
|
|
41
|
+
- **`inbox.jsonl`** — Messages waiting for this agent, one per line, append-only
|
|
42
|
+
- **`outbox.jsonl`** — Replies from this agent, append-only
|
|
43
|
+
- **`ack.json`** — The ID of the last acknowledged message (for garbage collection)
|
|
44
|
+
- **`identity.json`** — Agent ID, project, role, PID, and session start time
|
|
45
|
+
|
|
46
|
+
The JSONL format — one JSON object per line — makes appending atomic and parsing trivial. No file locking, no corruption risk from concurrent writes, no binary format to decode.
|
|
47
|
+
|
|
48
|
+
## Messaging and Threading
|
|
49
|
+
|
|
50
|
+
Messages in The Score carry structured metadata beyond plain text. Every message has an **intent** that classifies its purpose:
|
|
51
|
+
|
|
52
|
+
| Intent | Meaning |
|
|
53
|
+
|---|---|
|
|
54
|
+
| `question` | Asking for information from other agents |
|
|
55
|
+
| `context` | Providing background or context |
|
|
56
|
+
| `proposal` | Proposing an action or fix |
|
|
57
|
+
| `action` | Announcing an action the agent took |
|
|
58
|
+
| `decision` | Recording a decision |
|
|
59
|
+
| `alert` | Forwarding a Sentinel alert |
|
|
60
|
+
| `approval` / `rejection` | Responding to a proposal |
|
|
61
|
+
| `handoff` | Transferring responsibility to another agent |
|
|
62
|
+
| `fileRequest` | Requesting a file from another agent |
|
|
63
|
+
| `fileDelivery` | Delivering a requested file |
|
|
64
|
+
|
|
65
|
+
Intents serve two purposes. First, they give the receiving agent structured context about what kind of response is expected — a question needs an answer, a proposal needs approval or rejection, a decision needs acknowledgment. Second, they feed into Lore: when a message has `intent: decision`, Symphony can automatically record it as a lore entry.
|
|
66
|
+
|
|
67
|
+
Messages belong to **threads**. A thread starts when the first message on a topic is sent (with no `parentId`). Subsequent replies reference the thread root, building a conversation tree. Thread state is tracked in `~/.paradigm/score/threads/{thread-id}.json`, which records the topic, participants, message count, and last activity timestamp.
|
|
68
|
+
|
|
69
|
+
## The File Pipeline
|
|
70
|
+
|
|
71
|
+
Agents often need to share files — a type definition, an API contract, a configuration file. The Score's file pipeline enables this with a critical security constraint: **every file transfer requires explicit human approval**.
|
|
72
|
+
|
|
73
|
+
The flow works like this: Agent A sends a `fileRequest` message specifying the file path, a reason, and the target agent. The request appears in the owning human's terminal (via `paradigm symphony requests`). The human reviews and either approves, denies, or approves with redaction (stripping sensitive lines). Only after human approval does the file content get written to the requester's inbox.
|
|
74
|
+
|
|
75
|
+
Trust configuration lives in `~/.paradigm/score/trust.yaml`. You can define auto-approve patterns for trusted users (`docs/**`, `*.md`) and never-approve patterns for sensitive files (`.env*`, `*.key`, `*.pem`, `**/secrets/**`). The never-approve list is enforced absolutely — even clicking approve on a `.env` file will be denied by the system. File requests expire after one hour without action, and all transfers are logged.
|
|
76
|
+
|
|
77
|
+
## /loop: The Agent Heartbeat
|
|
78
|
+
|
|
79
|
+
The glue that makes The Score work is `/loop`. Each Claude Code session runs `/loop 10s paradigm_symphony_poll`, which polls the inbox every 10 seconds for new messages. The `paradigm_symphony_poll` MCP tool reads `inbox.jsonl`, formats messages as structured prompts the agent can reason about, and suggests actions.
|
|
80
|
+
|
|
81
|
+
Without `/loop`, messages would accumulate in the inbox with nobody reading them. The loop is the heartbeat — it keeps agents responsive. When an agent processes a message and replies via `paradigm_symphony_send`, the reply goes to `outbox.jsonl`. A mail router (or Conductor, in later phases) picks up outbox messages and delivers them to the appropriate inbox files.
|
|
82
|
+
|
|
83
|
+
The convenience command `paradigm symphony join` combines registration and loop setup in one step — it registers the session's identity and starts the polling loop automatically.
|
|
84
|
+
|
|
85
|
+
## Thread Resolution and Lore Integration
|
|
86
|
+
|
|
87
|
+
Conversation threads are not meant to live forever. When a thread reaches a conclusion, any participant (human or agent) can resolve it with `paradigm symphony resolve <thread-id>`. Resolution triggers an automatic lore entry that captures the full conversation: topic, participants, decisions made, actions taken, and symbols discussed.
|
|
88
|
+
|
|
89
|
+
This is the bridge between ephemeral conversation and permanent project memory. A 15-minute exchange between three agents about a serialization bug becomes a searchable lore entry tagged with the relevant symbols and arc. The next developer encountering a similar issue can find the conversation, the decision, and the fix — all linked together.
|
|
90
|
+
|
|
91
|
+
## CLI Commands
|
|
92
|
+
|
|
93
|
+
The `paradigm symphony` command group provides the complete human interface:
|
|
94
|
+
|
|
95
|
+
- `paradigm symphony whoami` — Show this agent's identity and linked peers
|
|
96
|
+
- `paradigm symphony list` — List all known agents with status (awake/asleep) and location
|
|
97
|
+
- `paradigm symphony join` — Discover and connect Claude Code sessions on this machine
|
|
98
|
+
- `paradigm symphony join --remote <ip>` — Connect to a remote machine's mail server
|
|
99
|
+
- `paradigm symphony send "message"` — Broadcast to all linked agents
|
|
100
|
+
- `paradigm symphony send --to <agent> "message"` — Direct message to a specific agent
|
|
101
|
+
- `paradigm symphony send --thread <id> "message"` — Reply to an existing thread
|
|
102
|
+
- `paradigm symphony read` — Show unread messages
|
|
103
|
+
- `paradigm symphony threads` — List active threads
|
|
104
|
+
- `paradigm symphony resolve <id>` — Resolve a thread, creating a lore entry
|
|
105
|
+
- `paradigm symphony status` — Network overview (agents, threads, unread count)
|
|
106
|
+
|
|
107
|
+
For the file pipeline: `paradigm symphony request`, `paradigm symphony requests`, `paradigm symphony approve`, and `paradigm symphony deny`.
|
|
108
|
+
|
|
109
|
+
## MCP Tools for Agent Participation
|
|
110
|
+
|
|
111
|
+
Six MCP tools power agent-side Symphony participation:
|
|
112
|
+
|
|
113
|
+
- **`paradigm_symphony_poll`** — The heartbeat. Reads inbox, returns formatted messages and thread summaries. Called by `/loop`.
|
|
114
|
+
- **`paradigm_symphony_send`** — Send a message with intent, text, optional symbols, diff, or decision. Writes to outbox.
|
|
115
|
+
- **`paradigm_symphony_status`** — Overview of the local network: agents, threads, Sentinel endpoint.
|
|
116
|
+
- **`paradigm_symphony_thread`** — Get full context of a conversation thread with messages, participants, and extracted decisions.
|
|
117
|
+
- **`paradigm_symphony_request_file`** — Request a file from another agent. Returns immediately with `pending` status; delivery arrives via future poll.
|
|
118
|
+
- **`paradigm_symphony_approve_file`** — Approve or deny a pending file request after human confirmation.
|
|
119
|
+
|
|
120
|
+
These tools compose naturally with existing Paradigm workflows. An agent can poll for messages, discover a question about `#payment-serializer`, call `paradigm_ripple` to check impact, and respond with full context — all within a single `/loop` cycle.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-501-symphony-networking
|
|
3
|
+
title: 'Symphony Networking: Cross-Machine Relay'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-501
|
|
11
|
+
- hub-and-spoke-topology-one
|
|
12
|
+
- websocket-relay-watches
|
|
13
|
+
- pairing-6-digit-code
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 4
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-501.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Beyond Single-Machine Messaging
|
|
24
|
+
|
|
25
|
+
Symphony Phase 0 (A-Mail) established file-based agent-to-agent messaging on a single machine — JSONL mailboxes at `~/.paradigm/score/`, polled via `/loop`. But what happens when two developers on the same WiFi, or at different locations, want their Claude instances to collaborate?
|
|
26
|
+
|
|
27
|
+
Symphony Phase 1 adds cross-machine networking via a WebSocket relay. The key design principle: **the local mailbox model is unchanged**. Networking is a transparent sync layer that watches local outboxes and delivers remote messages to local inboxes.
|
|
28
|
+
|
|
29
|
+
## Hub-and-Spoke Topology
|
|
30
|
+
|
|
31
|
+
One machine runs `paradigm symphony serve` (the **hub**), and others connect with `paradigm symphony join --remote` (the **spokes**). The hub relays messages between all connected machines.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Machine A (Hub) Machine B (Spoke)
|
|
35
|
+
┌─────────────────────┐ ┌─────────────────────┐
|
|
36
|
+
│ ~/.paradigm/score/ │ │ ~/.paradigm/score/ │
|
|
37
|
+
│ agents/projA/core │ │ agents/projB/core │
|
|
38
|
+
│ inbox.jsonl │◄────ws───►│ inbox.jsonl │
|
|
39
|
+
│ outbox.jsonl │ :3939 │ outbox.jsonl │
|
|
40
|
+
└─────────────────────┘ └─────────────────────┘
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The relay watches each local agent's outbox file (polling every 2 seconds via `fs.stat`). When new messages appear, they're pushed to all connected peers as WebSocket frames. Incoming messages from peers are written to the appropriate local inbox via `appendToInbox()`.
|
|
44
|
+
|
|
45
|
+
## Pairing & Authentication
|
|
46
|
+
|
|
47
|
+
Security is critical when connecting machines over a network. Symphony uses a pairing code + HMAC challenge-response protocol:
|
|
48
|
+
|
|
49
|
+
1. The hub generates a 32-byte random secret and derives a **6-digit pairing code**
|
|
50
|
+
2. The code is displayed on the hub's terminal
|
|
51
|
+
3. The spoke connects and receives a `hello` frame with a random challenge nonce
|
|
52
|
+
4. The user enters the code on the spoke terminal (or embeds it in the connection string)
|
|
53
|
+
5. The spoke computes `HMAC-SHA256(challenge, SHA256(code))` and sends an `auth` frame
|
|
54
|
+
6. The hub verifies the code and HMAC proof, then sends `auth_ok` with its agent list
|
|
55
|
+
|
|
56
|
+
Pairing codes rotate every 5 minutes. After 3 failed attempts from the same IP, a 60-second cooldown is enforced. Peer records are saved to `~/.paradigm/score/peers.json` (file mode 0600) for auto-reconnect.
|
|
57
|
+
|
|
58
|
+
## Two Connection Modes
|
|
59
|
+
|
|
60
|
+
### LAN Pairing (same WiFi)
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
# Machine A (hub)
|
|
64
|
+
paradigm symphony serve
|
|
65
|
+
# Shows: Pairing Code: 847 291
|
|
66
|
+
|
|
67
|
+
# Machine B (spoke)
|
|
68
|
+
paradigm symphony join --remote 192.168.1.42:3939
|
|
69
|
+
# Prompted for code
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Internet Direct Connect
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
# Machine A
|
|
76
|
+
paradigm symphony serve --public
|
|
77
|
+
# Shows connection string
|
|
78
|
+
|
|
79
|
+
# Machine B
|
|
80
|
+
paradigm symphony join --remote 73.162.44.103:3939#847291
|
|
81
|
+
# Code embedded — no prompt
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Internet mode requires port 3939 to be reachable (port forward, VPN, or SSH tunnel).
|
|
85
|
+
|
|
86
|
+
## Trust Management
|
|
87
|
+
|
|
88
|
+
Peers are managed via CLI commands:
|
|
89
|
+
|
|
90
|
+
- `paradigm symphony peers` — List trusted peers with agent counts and last-seen times
|
|
91
|
+
- `paradigm symphony peers revoke <id>` — Immediately disconnect and block reconnection
|
|
92
|
+
- `paradigm symphony peers forget --force` — Clear all peer trust records
|
|
93
|
+
|
|
94
|
+
Existing `trust.yaml` hard-deny patterns (`.env*`, `*.key`, `*.pem`) apply to remote file requests — the trust boundary extends across the network.
|
|
95
|
+
|
|
96
|
+
## Relay Internals
|
|
97
|
+
|
|
98
|
+
The `SymphonyRelay` class handles both server and client modes:
|
|
99
|
+
|
|
100
|
+
- **Outbox watcher**: Polls every 2s, compares outbox line counts against stored positions, forwards new messages
|
|
101
|
+
- **Deduplication**: Bounded `Set<string>` of message IDs (max 10,000) prevents duplicate delivery
|
|
102
|
+
- **Keepalive**: Ping/pong every 30s with 10s pong timeout. Dead connections are auto-terminated
|
|
103
|
+
- **Auto-reconnect**: Client mode uses exponential backoff (1s → 2s → 4s → ... → 30s max)
|
|
104
|
+
- **Rate limiting**: 3 failed auth attempts from the same IP triggers a 60s cooldown
|
|
105
|
+
|
|
106
|
+
## Remote Agent Visibility
|
|
107
|
+
|
|
108
|
+
Remote agents appear throughout the Symphony CLI and MCP tools:
|
|
109
|
+
|
|
110
|
+
- `paradigm symphony list` shows remote agents with a `(remote: peer-name)` tag
|
|
111
|
+
- `paradigm symphony status` includes peer count and remote agent totals
|
|
112
|
+
- `paradigm_symphony_status` MCP tool returns a `peers` array in its response
|
|
113
|
+
- Platform UI `GET /api/symphony/peers` endpoint returns connected peer data
|
|
114
|
+
|
|
115
|
+
Local MCP tools (`peek`, `poll`, `send`) work unchanged — they just read/write local files. The relay handles the network transport transparently.
|
|
116
|
+
|
|
117
|
+
## Backward Compatibility
|
|
118
|
+
|
|
119
|
+
If `paradigm symphony serve` is never run, Symphony operates exactly as Phase 0: local-only file-based messaging. Networking is purely additive — no existing workflows change.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-501-task-management
|
|
3
|
+
title: Task Management
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-501
|
|
11
|
+
- tasks-are-persistent
|
|
12
|
+
- auto-generated-ids-t-date-sequence
|
|
13
|
+
- three-priority-levels
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 4
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-501.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Why Tasks Exist
|
|
24
|
+
|
|
25
|
+
AI agent sessions are stateless. You can discuss a plan, identify five things that need doing, and then the session ends. The next session starts blank — those five items are gone. Sticky notes on a monitor do not help when your developer is a language model.
|
|
26
|
+
|
|
27
|
+
Paradigm's Task Management system provides a persistent scratch pad that survives context windows. Tasks are lightweight, date-partitioned YAML entries that capture what needs doing, how urgent it is, and what project knowledge relates to it. They are not a full project management system — they are the missing short-term memory between sessions.
|
|
28
|
+
|
|
29
|
+
The key difference from lore: lore records what happened (past tense). Tasks record what should happen (future tense). Together they form a complete timeline — memory of the past and intention for the future.
|
|
30
|
+
|
|
31
|
+
## Anatomy of a Task
|
|
32
|
+
|
|
33
|
+
Every task follows a consistent structure:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
id: T-2026-02-26-001
|
|
37
|
+
blurb: "Add rate limiting to the /api/payments endpoint"
|
|
38
|
+
priority: high
|
|
39
|
+
status: open
|
|
40
|
+
tags: [security, payments]
|
|
41
|
+
related_lore: [L-2026-02-25-003]
|
|
42
|
+
created: "2026-02-26T10:15:00Z"
|
|
43
|
+
updated: "2026-02-26T10:15:00Z"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The `id` field is auto-generated: `T-{date}-{sequence}`, following the same date-partitioned pattern as lore entries. The `blurb` is the only required field — a concise description of what needs to be done. Everything else is optional but useful.
|
|
47
|
+
|
|
48
|
+
Three priority levels exist: `high` (do this soon), `medium` (do this eventually), and `low` (nice to have). Tasks without an explicit priority default to `medium`.
|
|
49
|
+
|
|
50
|
+
Three statuses track lifecycle: `open` (needs doing), `done` (completed), and `shelved` (parked for later — not abandoned, just deferred).
|
|
51
|
+
|
|
52
|
+
## Storage: Date-Partitioned YAML
|
|
53
|
+
|
|
54
|
+
Tasks live in `.paradigm/tasks/entries/` organized by creation date:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
.paradigm/tasks/
|
|
58
|
+
entries/
|
|
59
|
+
2026-02-25/
|
|
60
|
+
T-2026-02-25-001.yaml
|
|
61
|
+
T-2026-02-25-002.yaml
|
|
62
|
+
2026-02-26/
|
|
63
|
+
T-2026-02-26-001.yaml
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Date partitioning keeps directories small. Each task is a standalone YAML file, making them easy to read, edit, and version-control. The date in the path matches the date in the task ID.
|
|
67
|
+
|
|
68
|
+
## The Five MCP Tools
|
|
69
|
+
|
|
70
|
+
**`paradigm_task_create`** — Create a new task. The `blurb` field is required — a short description of what needs to be done. Optional fields include `priority` (high/medium/low), `tags` (for categorization and filtering), and `related_lore` (linking to lore entries that provide context). The task is written to the correct date directory with an auto-incremented ID and starts with status `open`.
|
|
71
|
+
|
|
72
|
+
**`paradigm_task_list`** — List tasks with filters. Filter by `status` (open/done/shelved/all), `priority` (high/medium/low), or `tag`. Results are sorted by priority (high first) then by date (newest first). Without filters, it returns all open tasks.
|
|
73
|
+
|
|
74
|
+
**`paradigm_task_update`** — Update any field on an existing task by ID. You can change the blurb, priority, status, tags, or related_lore. Only specified fields are modified — everything else is preserved.
|
|
75
|
+
|
|
76
|
+
**`paradigm_task_done`** — Shorthand to mark a task as complete. Pass the task ID and the status changes to `done` with an updated timestamp. This is equivalent to `paradigm_task_update` with `status: done` but more ergonomic for the common case.
|
|
77
|
+
|
|
78
|
+
**`paradigm_task_shelve`** — Shorthand to shelve a task for later. Pass the task ID and the status changes to `shelved`. Shelved tasks are not deleted — they remain searchable and can be reopened by updating their status back to `open`.
|
|
79
|
+
|
|
80
|
+
## Session Recovery Integration
|
|
81
|
+
|
|
82
|
+
The top 5 open tasks are automatically surfaced during session recovery. When a new session starts and the agent calls any Paradigm MCP tool, the recovery data includes the highest-priority open tasks alongside the usual breadcrumbs and checkpoint data.
|
|
83
|
+
|
|
84
|
+
This means every session begins with awareness of outstanding work. The agent does not need to ask "what should I work on?" — the task list is already there, sorted by priority. This is the scratch-pad-that-survives pattern: write tasks in one session, see them in the next.
|
|
85
|
+
|
|
86
|
+
## When to Create Tasks
|
|
87
|
+
|
|
88
|
+
Create tasks when:
|
|
89
|
+
- You identify work that cannot be completed in the current session
|
|
90
|
+
- A code review surfaces follow-up items
|
|
91
|
+
- You discover a bug or improvement while working on something else
|
|
92
|
+
- The user mentions something that should be tracked but is not the current focus
|
|
93
|
+
- A handoff needs to communicate specific next steps
|
|
94
|
+
|
|
95
|
+
Do not use tasks for:
|
|
96
|
+
- Tracking completed work (that is what lore is for)
|
|
97
|
+
- Long-term roadmap items (use your project management tool)
|
|
98
|
+
- Architectural decisions (use lore entries with type `decision`)
|
|
99
|
+
|
|
100
|
+
Tasks are ephemeral intentions — they should be created quickly, completed or shelved promptly, and never allowed to accumulate into a backlog of hundreds. If your task list grows beyond 20-30 open items, it is time to triage: shelve the low-priority items and focus on what matters.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-601-agent-renaissance
|
|
3
|
+
title: Agent Manifest Renaissance
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-601
|
|
11
|
+
- six-new-dimensions
|
|
12
|
+
- intrinsic-learning-optional
|
|
13
|
+
- five-collaboration-stances
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 5
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-601.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Six New Dimensions
|
|
24
|
+
|
|
25
|
+
Before v5.0, an agent profile (`AgentProfile`) had six core fields: `id`, `role`, `description`, `personality`, `expertise`, and `transferable` patterns. These covered identity and knowledge but said nothing about how agents observe, learn, contribute context, report work, collaborate, or decide when to speak up.
|
|
26
|
+
|
|
27
|
+
v5.0 adds six new dimensions to the agent manifest, transforming it from a static identity card into a living behavioral specification:
|
|
28
|
+
|
|
29
|
+
1. **Attention** (`AgentAttention`) — What this agent notices in the event stream
|
|
30
|
+
2. **Learning** (`AgentLearning`) — How this agent improves over time
|
|
31
|
+
3. **Context** (`AgentContext`) — What this agent contributes to shared context
|
|
32
|
+
4. **Reporting** (`AgentReporting`) — How this agent logs work and learnings
|
|
33
|
+
5. **Collaboration** (`AgentCollaboration`) — How this agent interacts with others
|
|
34
|
+
6. **Nomination** (`AgentNomination`) — When this agent speaks up in ambient mode
|
|
35
|
+
|
|
36
|
+
All six are optional on the `AgentProfile` interface for backward compatibility. Agents without these fields use sensible defaults or are treated as non-ambient (they do not participate in the observation-nomination loop).
|
|
37
|
+
|
|
38
|
+
## Attention (AgentAttention)
|
|
39
|
+
|
|
40
|
+
Covered in detail in the Attention & Scoring lesson. The attention dimension defines what the agent watches for: symbol patterns, file paths, semantic concepts, and signal types. The threshold determines sensitivity.
|
|
41
|
+
|
|
42
|
+
Default configs exist for five standard roles via `DEFAULT_ATTENTION`. For example, the security agent defaults to watching all gate symbols (`^*`), auth-related components and paths, security concepts, and gate/route signals with a low threshold of 0.4.
|
|
43
|
+
|
|
44
|
+
## Learning (AgentLearning)
|
|
45
|
+
|
|
46
|
+
The learning dimension has two layers:
|
|
47
|
+
|
|
48
|
+
**Intrinsic Learning** (`IntrinsicLearning`) — The agent's own drive to improve. This is optional for downloaded agents (they may or may not want to learn from user feedback). Four sub-sections:
|
|
49
|
+
|
|
50
|
+
- **feedback** — When to ask for assessment: after work, after recommendations, from which agents, from humans. A security agent might configure `from_agents: ['architect', 'reviewer']` to weight peer feedback.
|
|
51
|
+
- **adaptation** — How to adjust: `confidence_ema_alpha` (default 0.3) controls how quickly confidence scores move. `notebook_auto_promote` auto-promotes high-value journal entries. `pattern_extraction` extracts reusable patterns from learnings.
|
|
52
|
+
- **reflection** — When to self-reflect: on failure, on correction, on debate loss. Each trigger records a journal entry with the relevant trigger type.
|
|
53
|
+
- **calibration** — Accuracy targets: `target_accuracy` (default 0.85) is the goal. `overconfidence_alert` (default 0.15) triggers when estimated confidence exceeds actual accuracy by more than 15 points.
|
|
54
|
+
|
|
55
|
+
**Platform Learning** (`PlatformLearning`) — Mandated for all marketplace agents. `feedback_required: true` is always set. Collects `work_outcome`, `helpfulness`, and `would_use_again` metrics. Feedback flows upstream anonymized. Aggregation is configurable per-offering, per-session, or per-project.
|
|
56
|
+
|
|
57
|
+
## Context (AgentContext)
|
|
58
|
+
|
|
59
|
+
The context dimension defines what the agent contributes to the composed context and what it requires to be loaded.
|
|
60
|
+
|
|
61
|
+
**Contributions** — An array of `ContextContribution` items. Each specifies a `section` name (e.g., "Security Warnings"), inline `content` or a `content_ref` MCP resource URI, and a `priority` (high, medium, low). High-priority contributions are always included in composed context. Medium-priority contributions are included if token budget allows. Low-priority contributions are loaded on demand.
|
|
62
|
+
|
|
63
|
+
**Requirements** — An array of `ContextRequirement` items specifying files or sections the agent needs loaded before it can work effectively. A security agent might require `portal.yaml` and the "gates" section of CLAUDE.md.
|
|
64
|
+
|
|
65
|
+
## Reporting (AgentReporting)
|
|
66
|
+
|
|
67
|
+
The reporting dimension controls how the agent captures its work and learnings in the knowledge streams.
|
|
68
|
+
|
|
69
|
+
**Work Log Config** (`WorkLogConfig`):
|
|
70
|
+
- `auto_record` — Automatically create work log entries when work completes
|
|
71
|
+
- `structure` — Which structured fields to include: `task_ref`, `files_modified`, `symbols_touched`, `next_steps`, `blockers`
|
|
72
|
+
- `destination` — Always `'work-log'`
|
|
73
|
+
|
|
74
|
+
**Learning Journal Config** (`LearningJournalConfig`):
|
|
75
|
+
- `auto_record` — Automatically record learning moments
|
|
76
|
+
- `triggers` — Which events trigger journal entries: `correction_received`, `confidence_miss`, `pattern_discovered`
|
|
77
|
+
- `destination` — Always `'journal'` (agent-private)
|
|
78
|
+
|
|
79
|
+
## Collaboration (AgentCollaboration)
|
|
80
|
+
|
|
81
|
+
The collaboration dimension defines how the agent interacts with others in multi-agent contexts.
|
|
82
|
+
|
|
83
|
+
**Default Stance** (`CollaborationStance`) — One of five stances:
|
|
84
|
+
- `lead` — Drives decisions, sets direction (architect default)
|
|
85
|
+
- `advisory` — Offers guidance but does not drive (reviewer, security defaults)
|
|
86
|
+
- `supportive` — Follows direction, executes (builder default)
|
|
87
|
+
- `observer` — Watches but rarely acts
|
|
88
|
+
- `peer` — Equal footing with no hierarchy
|
|
89
|
+
|
|
90
|
+
**Per-Agent Relationships** — The `with` record allows overriding stance per agent. A builder might be `supportive` by default but `peer` with another builder.
|
|
91
|
+
|
|
92
|
+
**Debate Config** — Controls debate behavior: `will_challenge` (will push back), `evidence_required` (must cite specific code/patterns), `escalate_to_human` (ask human if debate does not resolve).
|
|
93
|
+
|
|
94
|
+
Default configs exist via `DEFAULT_COLLABORATION`. The architect defaults to `lead` stance with evidence-based challenging and human escalation. The builder defaults to `supportive` with `can_contradict: false` toward the architect.
|
|
95
|
+
|
|
96
|
+
## Nomination (AgentNomination)
|
|
97
|
+
|
|
98
|
+
The nomination dimension defines behavioral rules for self-nomination beyond the threshold check.
|
|
99
|
+
|
|
100
|
+
**speak_when** — Conditions for speaking up:
|
|
101
|
+
- `relevance_above` — Score threshold (default 0.6, mirrors attention threshold)
|
|
102
|
+
- `urgency` — Always speak for specific urgency types: `security_risk`, `breaking_change`, `gate_missing`, `test_failure`, `performance_risk`
|
|
103
|
+
- `asked_directly` — Always respond to direct questions (default: true)
|
|
104
|
+
|
|
105
|
+
**quiet_when** — Conditions for staying silent:
|
|
106
|
+
- `relevance_below` — Hard floor below which the agent never speaks
|
|
107
|
+
- `another_agent_handling` — Stay quiet if another agent is already addressing this
|
|
108
|
+
- `human_explicitly_excluded` — Respect human's explicit exclusion
|
|
109
|
+
|
|
110
|
+
**contribution_style** — How the agent communicates:
|
|
111
|
+
- `brief_first` — Start with a short summary, elaborate if asked
|
|
112
|
+
- `cite_sources` — Reference specific code and patterns
|
|
113
|
+
- `offer_action` — Offer concrete actions rather than just observations
|
|
114
|
+
|
|
115
|
+
## buildProfileEnrichment
|
|
116
|
+
|
|
117
|
+
The `buildProfileEnrichment` function composes all six dimensions into a prompt enrichment string for orchestration. It takes the agent profile, relevant symbols, optional notebook entries, and optional ambient context (recent decisions, journal insights, pending nominations).
|
|
118
|
+
|
|
119
|
+
The output is structured markdown with sections for: Agent Identity, Expertise on Relevant Symbols, Transferable Patterns, Relevant Notebook Entries, Attention patterns, Collaboration stance, Nomination preferences, Recent Team Decisions, Transferable Insights, and Pending Nominations.
|
|
120
|
+
|
|
121
|
+
This enrichment is injected into the agent's prompt during orchestration, giving it full awareness of its identity, capabilities, behavioral rules, and ambient context — all derived from the `.agent` file and the knowledge streams.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-601-attention-scoring
|
|
3
|
+
title: Attention & Scoring
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-601
|
|
11
|
+
- agentattention-has-four
|
|
12
|
+
- four-scoring-dimensions
|
|
13
|
+
- score-is-max-based
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 5
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-601.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## AgentAttention Patterns
|
|
24
|
+
|
|
25
|
+
Every agent in the ambient system has an attention configuration — a set of patterns that define what the agent notices. Think of it as a personalized filter: events that match the agent's attention patterns are potentially relevant; events that do not match are noise.
|
|
26
|
+
|
|
27
|
+
The `AgentAttention` interface has five fields:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
interface AgentAttention {
|
|
31
|
+
symbols?: string[]; // Symbol patterns (e.g., ["^*", "#*-middleware"])
|
|
32
|
+
paths?: string[]; // File path patterns (e.g., ["auth/**", "middleware/**"])
|
|
33
|
+
concepts?: string[]; // Semantic triggers (e.g., ["JWT", "RBAC", "injection"])
|
|
34
|
+
signals?: AttentionSignal[]; // Event type triggers (e.g., [{ type: "gate-added" }])
|
|
35
|
+
threshold?: number; // Confidence threshold (default 0.6)
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Symbols** use glob patterns to match against the `symbols` array on events. A security agent watching `["^*", "#*-auth", "#*-middleware"]` will match any gate symbol and any component whose name ends in `-auth` or `-middleware`.
|
|
40
|
+
|
|
41
|
+
**Paths** use glob patterns to match against the `path` field on events. A builder watching `["src/**", "lib/**", "packages/**"]` matches any source file change.
|
|
42
|
+
|
|
43
|
+
**Concepts** are semantic keywords matched against the event's `context`, `keywords`, and `type` fields (all lowercased). A tester watching `["test", "coverage", "assertion"]` will match events mentioning those terms.
|
|
44
|
+
|
|
45
|
+
**Signals** match against the event's `type` field. A security agent with `signals: [{ type: 'gate-added' }, { type: 'route-created' }]` will match whenever a new gate or route appears in the stream.
|
|
46
|
+
|
|
47
|
+
## Four Scoring Dimensions
|
|
48
|
+
|
|
49
|
+
When an event enters the stream, each agent scores it against their attention patterns across four dimensions:
|
|
50
|
+
|
|
51
|
+
**symbolMatch (0.0-1.0):** For each pattern in the agent's `symbols` array, check if any symbol in the event matches (using glob). If any match is found, `symbolMatch = 1.0`. If no agent symbols are defined or no event symbols exist, `symbolMatch = 0.0`.
|
|
52
|
+
|
|
53
|
+
**pathMatch (0.0-1.0):** For each pattern in the agent's `paths` array, check if the event's `path` matches. If any match is found, `pathMatch = 1.0`. Binary: either a path matches or it does not.
|
|
54
|
+
|
|
55
|
+
**conceptMatch (0.0-1.0):** The event's `context`, `keywords`, and `type` are joined into a lowercased text. Each concept in the agent's `concepts` array is checked for inclusion. The score is `matched / total_concepts`. If the agent watches 5 concepts and 3 appear in the event text, `conceptMatch = 0.6`.
|
|
56
|
+
|
|
57
|
+
**signalMatch (0.0-1.0):** For each signal in the agent's `signals` array, check if the event's `type` matches. If any match, `signalMatch = 1.0`. Binary.
|
|
58
|
+
|
|
59
|
+
## Max-Based Score
|
|
60
|
+
|
|
61
|
+
The overall score is the **maximum** of the four dimensions:
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
const score = Math.max(symbolMatch, pathMatch, conceptMatch, signalMatch);
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This is a deliberate design choice. Using max (rather than average or weighted sum) means a single strong match is enough to trigger attention. A security agent does not need to match on all four dimensions — if the event mentions a gate symbol (`symbolMatch = 1.0`), that alone is sufficient even if the file path, concepts, and signals do not match.
|
|
68
|
+
|
|
69
|
+
The alternative (averaging) would dilute strong signals: a perfect symbol match (1.0) with no other matches would average to 0.25, likely falling below the threshold. Max scoring ensures that domain-specific expertise in any single dimension is respected.
|
|
70
|
+
|
|
71
|
+
## Threshold-Based Self-Nomination
|
|
72
|
+
|
|
73
|
+
After scoring, the agent checks its threshold:
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
const threshold = attention.threshold ?? 0.6;
|
|
77
|
+
const shouldNominate = score >= threshold;
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
If the score meets or exceeds the threshold, the agent should self-nominate a contribution. If not, the agent stays quiet, and the `quietReason` field records why: `'below-threshold'`.
|
|
81
|
+
|
|
82
|
+
The default threshold is 0.6, but different agent roles have different defaults based on their domain:
|
|
83
|
+
|
|
84
|
+
| Role | Default Threshold | Rationale |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| architect | 0.5 | Broad awareness — should notice most structural changes |
|
|
87
|
+
| builder | 0.7 | Focused — only speaks when directly relevant to implementation |
|
|
88
|
+
| reviewer | 0.6 | Balanced — watches code quality and patterns |
|
|
89
|
+
| tester | 0.5 | Broad — testing intersects all areas |
|
|
90
|
+
| security | 0.4 | Most sensitive — should speak up early and often |
|
|
91
|
+
|
|
92
|
+
A lower threshold means the agent speaks up more often (more false positives, fewer missed issues). A higher threshold means the agent speaks up less often (fewer false positives, more missed issues). Security uses 0.4 because the cost of missing a security issue far outweighs the cost of a false alarm.
|
|
93
|
+
|
|
94
|
+
## scoreEventForAgent
|
|
95
|
+
|
|
96
|
+
The `scoreEventForAgent` function ties everything together:
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
function scoreEventForAgent(
|
|
100
|
+
event: StreamEvent,
|
|
101
|
+
agentId: string,
|
|
102
|
+
attention: AgentAttention
|
|
103
|
+
): AttentionScore
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
It returns an `AttentionScore` with five fields:
|
|
107
|
+
- `agentId` — Which agent evaluated this event
|
|
108
|
+
- `score` — Overall relevance (0.0-1.0)
|
|
109
|
+
- `breakdown` — The four dimension scores (`symbolMatch`, `pathMatch`, `conceptMatch`, `signalMatch`)
|
|
110
|
+
- `shouldNominate` — Whether the score exceeds the agent's threshold
|
|
111
|
+
- `quietReason` — Why the agent stayed quiet (if it did)
|
|
112
|
+
|
|
113
|
+
The breakdown is valuable for debugging attention patterns. If an agent is not speaking up when expected, the breakdown shows which dimension scored low. If `symbolMatch = 0.0` but the event clearly involves the agent's domain, the agent's symbol patterns may need expanding.
|
|
114
|
+
|
|
115
|
+
## DEFAULT_ATTENTION for Standard Roles
|
|
116
|
+
|
|
117
|
+
Paradigm provides default attention configurations for five standard roles:
|
|
118
|
+
|
|
119
|
+
**Architect** — Watches all flows (`$*`) and components (`#*`), concepts like `architecture`, `design`, `pattern`, `refactor`. Threshold 0.5.
|
|
120
|
+
|
|
121
|
+
**Builder** — Watches source paths (`src/**`, `lib/**`, `packages/**`). Threshold 0.7.
|
|
122
|
+
|
|
123
|
+
**Reviewer** — Watches concepts like `code quality`, `bug`, `smell`, `convention`. Threshold 0.6.
|
|
124
|
+
|
|
125
|
+
**Tester** — Watches test paths (`**/*.test.*`, `**/*.spec.*`), concepts like `test`, `coverage`, `assertion`, and `error-encountered` signals. Threshold 0.5.
|
|
126
|
+
|
|
127
|
+
**Security** — Watches gate symbols (`^*`), auth components (`#*-auth`, `#*-middleware`), auth paths (`auth/**`, `middleware/**`, `guards/**`), concepts like `permission`, `JWT`, `session`, `RBAC`, `XSS`, `injection`, and signals `gate-added` and `route-created`. Threshold 0.4.
|
|
128
|
+
|
|
129
|
+
These defaults are overridable in the agent's `.agent` file via the `attention` field. A security agent working on a project with no web routes might raise its threshold to 0.6 and remove the path patterns.
|