happy2 0.0.13 → 0.0.14
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/package.json +1 -1
- package/packages/happy2-server/PLUGINS.md +196 -42
- package/packages/happy2-server/dist/index.d.ts +1 -0
- package/packages/happy2-server/dist/index.d.ts.map +1 -1
- package/packages/happy2-server/dist/index.js +1 -0
- package/packages/happy2-server/dist/index.js.map +1 -1
- package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.d.ts +4 -0
- package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.js +15 -0
- package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.js.map +1 -0
- package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.test.js +17 -0
- package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/agent/agentTurnGetPluginContext.d.ts +23 -0
- package/packages/happy2-server/dist/modules/agent/agentTurnGetPluginContext.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agent/agentTurnGetPluginContext.js +70 -0
- package/packages/happy2-server/dist/modules/agent/agentTurnGetPluginContext.js.map +1 -0
- package/packages/happy2-server/dist/modules/agents/service.d.ts +2 -4
- package/packages/happy2-server/dist/modules/agents/service.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/agents/service.js +7 -7
- package/packages/happy2-server/dist/modules/agents/service.js.map +1 -1
- package/packages/happy2-server/dist/modules/auth/tokens.d.ts +15 -0
- package/packages/happy2-server/dist/modules/auth/tokens.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/auth/tokens.js +74 -6
- package/packages/happy2-server/dist/modules/auth/tokens.js.map +1 -1
- package/packages/happy2-server/dist/modules/auth/tokens.test.js +57 -0
- package/packages/happy2-server/dist/modules/auth/tokens.test.js.map +1 -1
- package/packages/happy2-server/dist/modules/chat/channelCreateWithMembers.d.ts +19 -0
- package/packages/happy2-server/dist/modules/chat/channelCreateWithMembers.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/chat/channelCreateWithMembers.js +87 -0
- package/packages/happy2-server/dist/modules/chat/channelCreateWithMembers.js.map +1 -0
- package/packages/happy2-server/dist/modules/chat/channelMembersUpdate.d.ts +15 -0
- package/packages/happy2-server/dist/modules/chat/channelMembersUpdate.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/chat/channelMembersUpdate.js +38 -0
- package/packages/happy2-server/dist/modules/chat/channelMembersUpdate.js.map +1 -0
- package/packages/happy2-server/dist/modules/chat/chatAppendAudit.d.ts +1 -1
- package/packages/happy2-server/dist/modules/chat/chatAppendAudit.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/catalog.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/catalog.js +3 -3
- package/packages/happy2-server/dist/modules/plugin/catalog.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/catalog.test.js +2 -2
- package/packages/happy2-server/dist/modules/plugin/catalog.test.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/apiPermissions.d.ts +5 -0
- package/packages/happy2-server/dist/modules/plugin/impl/apiPermissions.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/impl/apiPermissions.js +106 -0
- package/packages/happy2-server/dist/modules/plugin/impl/apiPermissions.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.js +10 -1
- package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/asManagementRequest.d.ts +3 -0
- package/packages/happy2-server/dist/modules/plugin/impl/asManagementRequest.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/impl/asManagementRequest.js +68 -0
- package/packages/happy2-server/dist/modules/plugin/impl/asManagementRequest.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.js +10 -2
- package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.d.ts +19 -0
- package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.js +1 -0
- package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.js +4 -2
- package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.test.js +14 -0
- package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.test.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/impl/managementRequestSelection.d.ts +345 -0
- package/packages/happy2-server/dist/modules/plugin/impl/managementRequestSelection.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/impl/managementRequestSelection.js +22 -0
- package/packages/happy2-server/dist/modules/plugin/impl/managementRequestSelection.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/packageLinkDownloader.d.ts +16 -0
- package/packages/happy2-server/dist/modules/plugin/packageLinkDownloader.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/packageLinkDownloader.js +67 -0
- package/packages/happy2-server/dist/modules/plugin/packageLinkDownloader.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/packageStore.d.ts +14 -1
- package/packages/happy2-server/dist/modules/plugin/packageStore.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/packageStore.js +112 -1
- package/packages/happy2-server/dist/modules/plugin/packageStore.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/packageStore.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/plugin/packageStore.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/packageStore.test.js +50 -0
- package/packages/happy2-server/dist/modules/plugin/packageStore.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginAgentCallContextGet.d.ts +5 -0
- package/packages/happy2-server/dist/modules/plugin/pluginAgentCallContextGet.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginAgentCallContextGet.js +26 -0
- package/packages/happy2-server/dist/modules/plugin/pluginAgentCallContextGet.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.js +7 -3
- package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/pluginDeveloperServer.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/plugin/pluginDeveloperServer.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginDeveloperServer.test.js +44 -0
- package/packages/happy2-server/dist/modules/plugin/pluginDeveloperServer.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstall.d.ts +4 -2
- package/packages/happy2-server/dist/modules/plugin/pluginInstall.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/pluginInstall.js +19 -2
- package/packages/happy2-server/dist/modules/plugin/pluginInstall.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetContainerName.d.ts +7 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetContainerName.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetContainerName.js +18 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetContainerName.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRequestUninstallContext.d.ts +13 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRequestUninstallContext.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRequestUninstallContext.js +35 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRequestUninstallContext.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.js +3 -1
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetUninstallContext.d.ts +6 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetUninstallContext.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetUninstallContext.js +17 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetUninstallContext.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationPermissionsUpdate.d.ts +18 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationPermissionsUpdate.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationPermissionsUpdate.js +92 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationPermissionsUpdate.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationUninstall.d.ts +16 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationUninstall.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationUninstall.js +71 -0
- package/packages/happy2-server/dist/modules/plugin/pluginInstallationUninstall.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginInstall.d.ts +21 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginInstall.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginInstall.js +71 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginInstall.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginUninstall.d.ts +12 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginUninstall.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginUninstall.js +56 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginUninstall.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteInstall.d.ts +11 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteInstall.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteInstall.js +44 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteInstall.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteUninstall.d.ts +10 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteUninstall.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteUninstall.js +41 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteUninstall.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateInstall.d.ts +26 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateInstall.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateInstall.js +78 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateInstall.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateUninstall.d.ts +25 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateUninstall.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateUninstall.js +76 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateUninstall.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestDeny.d.ts +11 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestDeny.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestDeny.js +48 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestDeny.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestGetPackage.d.ts +12 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestGetPackage.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestGetPackage.js +42 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestGetPackage.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestList.d.ts +5 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestList.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestList.js +18 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestList.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestListTerminalIds.d.ts +4 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestListTerminalIds.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestListTerminalIds.js +11 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestListTerminalIds.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestRecoverProcessing.d.ts +5 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestRecoverProcessing.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestRecoverProcessing.js +75 -0
- package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestRecoverProcessing.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginSkillPackageListReady.d.ts +12 -0
- package/packages/happy2-server/dist/modules/plugin/pluginSkillPackageListReady.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/pluginSkillPackageListReady.js +33 -0
- package/packages/happy2-server/dist/modules/plugin/pluginSkillPackageListReady.js.map +1 -0
- package/packages/happy2-server/dist/modules/plugin/service.d.ts +108 -7
- package/packages/happy2-server/dist/modules/plugin/service.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/service.js +463 -26
- package/packages/happy2-server/dist/modules/plugin/service.js.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/types.d.ts +75 -9
- package/packages/happy2-server/dist/modules/plugin/types.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/plugin/types.js +9 -0
- package/packages/happy2-server/dist/modules/plugin/types.js.map +1 -1
- package/packages/happy2-server/dist/modules/schema.d.ts +4224 -3264
- package/packages/happy2-server/dist/modules/schema.d.ts.map +1 -1
- package/packages/happy2-server/dist/modules/schema.js +35 -0
- package/packages/happy2-server/dist/modules/schema.js.map +1 -1
- package/packages/happy2-server/dist/routes/pluginHost.d.ts +2 -1
- package/packages/happy2-server/dist/routes/pluginHost.d.ts.map +1 -1
- package/packages/happy2-server/dist/routes/pluginHost.js +288 -6
- package/packages/happy2-server/dist/routes/pluginHost.js.map +1 -1
- package/packages/happy2-server/dist/routes/plugins.d.ts.map +1 -1
- package/packages/happy2-server/dist/routes/plugins.js +229 -3
- package/packages/happy2-server/dist/routes/plugins.js.map +1 -1
- package/packages/happy2-server/dist/server.d.ts +2 -0
- package/packages/happy2-server/dist/server.d.ts.map +1 -1
- package/packages/happy2-server/dist/server.js +9 -7
- package/packages/happy2-server/dist/server.js.map +1 -1
- package/packages/happy2-server/dist/web/assets/index-Dn5SZu3y.js +39 -0
- package/packages/happy2-server/dist/web/assets/{index-BaPUPGPe.css → index-Dys3sWv8.css} +1 -1
- package/packages/happy2-server/dist/web/index.html +2 -2
- package/packages/happy2-server/drizzle/0028_plugin_api_permissions.sql +1 -0
- package/packages/happy2-server/drizzle/0029_plugin_management_requests.sql +35 -0
- package/packages/happy2-server/drizzle/meta/_journal.json +14 -0
- package/packages/happy2-server/plugins/README.md +7 -3
- package/packages/happy2-server/plugins/chat-management/plugin.json +3 -3
- package/packages/happy2-server/plugins/chat-management/server.mjs +184 -17
- package/packages/happy2-server/plugins/plugin-developer/container/Dockerfile +6 -0
- package/packages/happy2-server/plugins/plugin-developer/plugin.json +17 -0
- package/packages/happy2-server/plugins/plugin-developer/plugin.png +0 -0
- package/packages/happy2-server/plugins/plugin-developer/server.mjs +155 -0
- package/packages/happy2-server/plugins/plugin-developer/skills/happy2-plugin-development/SKILL.md +59 -0
- package/packages/happy2-server/plugins/plugin-developer/skills/happy2-plugin-development/references/host-api.md +63 -0
- package/packages/happy2-server/plugins/plugin-developer/skills/happy2-plugin-development/references/installing.md +86 -0
- package/packages/happy2-server/plugins/plugin-developer/skills/happy2-plugin-development/references/package-format.md +137 -0
- package/packages/happy2-server/dist/modules/agent/agentChatGetIdBySession.d.ts +0 -7
- package/packages/happy2-server/dist/modules/agent/agentChatGetIdBySession.d.ts.map +0 -1
- package/packages/happy2-server/dist/modules/agent/agentChatGetIdBySession.js +0 -15
- package/packages/happy2-server/dist/modules/agent/agentChatGetIdBySession.js.map +0 -1
- package/packages/happy2-server/dist/web/assets/index-BnhFxR3U.js +0 -39
package/package.json
CHANGED
|
@@ -5,20 +5,23 @@ server, or any useful combination of those pieces. Administrators can install a
|
|
|
5
5
|
built-in package, upload one ZIP, download one ZIP over HTTPS, or import a GitHub
|
|
6
6
|
repository. Catalog discovery, verified preparation, durable system plugins,
|
|
7
7
|
immutable package/image snapshots, writable installation data, and independent
|
|
8
|
-
runtime installations remain separate boundaries.
|
|
8
|
+
runtime installations remain separate boundaries. Individual runtime
|
|
9
|
+
installations can be uninstalled without removing the reusable system-plugin
|
|
10
|
+
snapshot.
|
|
9
11
|
|
|
10
12
|
Plugin management is system-wide and administrator-only. The first installation
|
|
11
|
-
of a
|
|
13
|
+
of a source package creates one durable system-plugin record and one immutable
|
|
12
14
|
package snapshot; later installations reuse that plugin identity and snapshot.
|
|
13
15
|
Every installation has its own CUID2, variables, selected image, lifecycle, and
|
|
14
16
|
dedicated container when it has a local runtime. Remote MCP configuration is
|
|
15
17
|
persisted and health-checked independently per installation. Ready MCP
|
|
16
18
|
installations expose their durably cached tools to Rig as external functions on
|
|
17
|
-
every agent submission. Happy
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
not
|
|
19
|
+
every agent submission. Happy also reconciles the skills from ready
|
|
20
|
+
installations into the exact agent sandbox home before each turn. Happy executes
|
|
21
|
+
each durable MCP call against the originating installation and resolves the
|
|
22
|
+
result back into the paused Rig run. Upgrade, marketplace discovery, and OAuth
|
|
23
|
+
flows are not implemented; individual installations can be uninstalled. Remote
|
|
24
|
+
update checks report drift but deliberately do not replace the installed snapshot.
|
|
22
25
|
|
|
23
26
|
MCP tools are discovered during each runtime activation and atomically replace
|
|
24
27
|
that installation's SQLite cache before it becomes ready. Local discovery runs
|
|
@@ -47,7 +50,8 @@ to a ready installation.
|
|
|
47
50
|
|
|
48
51
|
Each package has this shape. Built-ins live below
|
|
49
52
|
`packages/happy2-server/plugins`; installed snapshots live below the configured
|
|
50
|
-
`plugins.directory
|
|
53
|
+
`plugins.directory`. A ZIP may contain this tree at its root or inside one
|
|
54
|
+
top-level folder:
|
|
51
55
|
|
|
52
56
|
```text
|
|
53
57
|
example-plugin/
|
|
@@ -117,13 +121,15 @@ administrator can choose one.
|
|
|
117
121
|
"dockerfile": "container/Dockerfile",
|
|
118
122
|
"command": "/plugin/bin/indexer",
|
|
119
123
|
"args": ["--watch"],
|
|
120
|
-
"permissions": ["plugins:list"]
|
|
124
|
+
"permissions": ["plugins:list", "plugins:install", "plugins:uninstall"]
|
|
121
125
|
}
|
|
122
126
|
}
|
|
123
127
|
```
|
|
124
128
|
|
|
125
|
-
`version` uses `x.y.z` SemVer syntax. `shortName` is the stable
|
|
126
|
-
|
|
129
|
+
`version` uses `x.y.z` SemVer syntax. `shortName` is the stable package name and
|
|
130
|
+
must match a built-in package directory. External ZIPs are not required to make
|
|
131
|
+
their enclosing folder match; `shortName` still identifies the validated
|
|
132
|
+
package metadata and is not an installation identity.
|
|
127
133
|
The durable system plugin and every installation receive separate CUID2 IDs.
|
|
128
134
|
Variable keys are environment variable names. Every declared variable is
|
|
129
135
|
required for each installation. Secret values are encrypted with AES-256-GCM
|
|
@@ -137,14 +143,37 @@ otherwise it is required. A command and stdio MCP run alongside each other in
|
|
|
137
143
|
the same dedicated installation container. Container variables are supplied to
|
|
138
144
|
each configured process, not persisted in the image or container definition.
|
|
139
145
|
|
|
140
|
-
`container.permissions`
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
`container.permissions` declares the exact host API capabilities a package may
|
|
147
|
+
request. Permissions are grouped for presentation by API section:
|
|
148
|
+
`channels:manage` is a mutating permission in `channels`, `chats:update` is a
|
|
149
|
+
mutating permission in `chats`, while `plugins:list` is read-only and
|
|
150
|
+
`plugins:install` and `plugins:uninstall` are mutating permissions in `plugins`.
|
|
151
|
+
`plugins:request-install` and `plugins:request-uninstall` are also mutating
|
|
152
|
+
permissions, but create chat-scoped human approvals instead of granting direct
|
|
153
|
+
install or uninstall authority. Unknown and duplicate permissions are rejected
|
|
154
|
+
when the package is loaded.
|
|
155
|
+
Unknown and duplicate declarations are rejected when the package is loaded.
|
|
156
|
+
|
|
157
|
+
Declarations are not grants. Each install request may include a `permissions`
|
|
158
|
+
array containing any subset of the manifest declaration; omitted permissions
|
|
159
|
+
default to an empty grant. Installation responses expose `grantedPermissions`,
|
|
160
|
+
while catalog permission metadata is returned in `apiPermissions` sections with
|
|
161
|
+
separate `readOnly` and `mutations` arrays. Administrators can replace the grant
|
|
162
|
+
later with `POST /v0/admin/pluginInstallations/:installationId/updatePermissions`.
|
|
163
|
+
Changing a grant invalidates the current runtime token and restarts the local
|
|
164
|
+
container with a new token, so stale tokens cannot retain revoked access.
|
|
165
|
+
|
|
166
|
+
The isolated plugin host listener provides `GET /plugins`, `POST /plugins/install`,
|
|
167
|
+
`POST /plugins/uninstall`, `POST /channels/updateMembers`, and
|
|
168
|
+
`POST /channels/createChannel`, alongside the chat-update route. Each route
|
|
169
|
+
requires its matching capability. Plugin-triggered installs must also choose a
|
|
170
|
+
subset of the target package's declared permissions.
|
|
171
|
+
|
|
172
|
+
The bundled `hello` package is the minimal skill-plus-MCP example. The bundled
|
|
173
|
+
`plugin-developer` package contributes a comprehensive Happy2 plugin-development
|
|
174
|
+
skill and MCP tools for listing installations and requesting linked install or
|
|
175
|
+
uninstall approval from the current chat. Neither format is a Conductor or
|
|
176
|
+
Codex plugin format.
|
|
148
177
|
|
|
149
178
|
## Stdio MCP with a bundled container
|
|
150
179
|
|
|
@@ -303,6 +332,15 @@ read-only; a changed package requires an explicit future upgrade flow.
|
|
|
303
332
|
The request body may be omitted when the manifest declares no variables and
|
|
304
333
|
does not require a selected container image.
|
|
305
334
|
|
|
335
|
+
`POST /v0/admin/plugins/installPlugin` installs an external package. Send either
|
|
336
|
+
multipart form data with an `archive` ZIP part plus optional JSON `variables`
|
|
337
|
+
and `containerImageId` fields, or JSON with `sourceUrl`, `variables`, and
|
|
338
|
+
`containerImageId`. Link downloads allow public HTTPS only, revalidate every
|
|
339
|
+
redirect and resolved address, and are capped at three redirects, 20 seconds,
|
|
340
|
+
and 20 MiB. ZIP extraction rejects traversal, absolute paths, symlinks,
|
|
341
|
+
encryption, duplicate entries, more than 1,000 entries, files above 5 MiB, and
|
|
342
|
+
uncompressed package data above 20 MiB.
|
|
343
|
+
|
|
306
344
|
`containerImageId` is required for every local container manifest without a
|
|
307
345
|
bundled Dockerfile, and it is rejected in every other case. Unknown, missing, empty, or
|
|
308
346
|
oversized variable values are rejected. The endpoint returns HTTP 202 after the
|
|
@@ -310,7 +348,56 @@ durable system plugin (created once), immutable package/image snapshot, new
|
|
|
310
348
|
installation, variables, audit entry, initial state, and sync event are durable.
|
|
311
349
|
Calling it again for the same `shortName` creates another installation with a
|
|
312
350
|
new CUID2 and its own parameters and runtime. Container preparation continues
|
|
313
|
-
asynchronously.
|
|
351
|
+
asynchronously. `shortName` is globally unique across system plugins: a package
|
|
352
|
+
from another source that reuses an existing name is rejected with HTTP 409. An
|
|
353
|
+
agent request with such a collision can be staged for review, but approval
|
|
354
|
+
resolves it to `failed` without replacing the existing plugin.
|
|
355
|
+
|
|
356
|
+
`POST /v0/admin/pluginInstallations/:installationId/uninstallPlugin` removes
|
|
357
|
+
one exact installation. Happy stops and removes that installation's local
|
|
358
|
+
runtime, deletes its variables and tool cache through cascading durable state,
|
|
359
|
+
and removes the system plugin and immutable package snapshot only when no other
|
|
360
|
+
installation references it.
|
|
361
|
+
|
|
362
|
+
### Agent-requested approval
|
|
363
|
+
|
|
364
|
+
A local plugin container may ask Happy to install a public HTTPS ZIP or
|
|
365
|
+
uninstall an exact installation while its MCP tool is executing for an agent
|
|
366
|
+
turn. The normal long-lived incarnation token cannot make such a request. For
|
|
367
|
+
that MCP call only, Happy injects a five-minute capability token bound to the
|
|
368
|
+
originating Rig session, call ID, human actor, agent, chat, requester
|
|
369
|
+
installation, and live container incarnation.
|
|
370
|
+
|
|
371
|
+
The host API validates and stages the exact package before creating a durable
|
|
372
|
+
chat request. The request stores the package digest, source, display name,
|
|
373
|
+
description, icon, optional reason, and a preallocated installation ID. It does
|
|
374
|
+
not install synchronously and does not use MCP elicitation as authority. Happy's
|
|
375
|
+
own administrator approval is the authority and audit boundary. Agent-requested
|
|
376
|
+
installs reject packages requiring variables or an administrator-selected
|
|
377
|
+
container image, because those values must not be collected through chat.
|
|
378
|
+
|
|
379
|
+
Chat members can list requests and read the staged icon while a request is
|
|
380
|
+
`pending` or `processing`. A server administrator who is also a chat member can
|
|
381
|
+
approve or deny them:
|
|
382
|
+
|
|
383
|
+
- `GET /v0/chats/:chatId/pluginManagementRequests`
|
|
384
|
+
- `GET /v0/chats/:chatId/pluginManagementRequests/:requestId/image`
|
|
385
|
+
- `POST .../:requestId/approvePluginInstall`
|
|
386
|
+
- `POST .../:requestId/denyPluginInstall`
|
|
387
|
+
- `POST .../:requestId/approvePluginUninstall`
|
|
388
|
+
- `POST .../:requestId/denyPluginUninstall`
|
|
389
|
+
|
|
390
|
+
Request creation and every terminal resolution advance the chat's durable
|
|
391
|
+
point, append audit/sync evidence, and publish server and chat realtime hints.
|
|
392
|
+
Approval claims publish their intermediate `processing` state as well. If the
|
|
393
|
+
complete server stops during a claimed operation, startup reconciles the request
|
|
394
|
+
to `approved` only when the deterministic durable installation outcome exists;
|
|
395
|
+
otherwise it records a terminal failure instead of leaving the card stuck.
|
|
396
|
+
Every terminal path removes the staged package, and startup retries that cleanup
|
|
397
|
+
for requests resolved immediately before a process stopped. Terminal projections
|
|
398
|
+
therefore omit `imageUrl`; the UI must reconcile these durable requests and
|
|
399
|
+
render their name, description, optional image, source, reason, status, and
|
|
400
|
+
action controls.
|
|
314
401
|
|
|
315
402
|
If the catalog later advertises an update, additional installations remain
|
|
316
403
|
pinned to the existing system plugin's immutable manifest and package until an
|
|
@@ -365,6 +452,10 @@ Remote endpoints are rechecked.
|
|
|
365
452
|
- `POST /v0/admin/plugins/:shortName/installPlugin` performs the durable install
|
|
366
453
|
and queues lifecycle work. It may be called any number of times; each call
|
|
367
454
|
creates a distinct installation linked to the same system plugin.
|
|
455
|
+
- `POST /v0/admin/plugins/installPlugin` installs a validated ZIP upload or
|
|
456
|
+
public HTTPS ZIP link.
|
|
457
|
+
- `POST /v0/admin/pluginInstallations/:installationId/uninstallPlugin` removes
|
|
458
|
+
one installation and removes its system plugin only when it was the last one.
|
|
368
459
|
- `GET|POST /v0/pluginInstallations/:installationId/mcp` is the authenticated
|
|
369
460
|
Streamable HTTP bridge for one ready local stdio installation. It follows MCP
|
|
370
461
|
session semantics via `Mcp-Session-Id`. Happy’s existing bearer session is
|
|
@@ -384,6 +475,20 @@ Remote endpoints are rechecked.
|
|
|
384
475
|
capability in `X-Happy2-Chat-Token`. The endpoint deliberately accepts no
|
|
385
476
|
chat ID: the signed capability selects the chat, so tool arguments cannot
|
|
386
477
|
redirect the update to another conversation.
|
|
478
|
+
- `POST /plugin-install-requests` and
|
|
479
|
+
`POST /plugin-uninstall-requests` live only on the dedicated plugin host
|
|
480
|
+
listener. A container must present `HAPPY2_PLUGIN_API_TOKEN` and declare the
|
|
481
|
+
corresponding host permission. The two mutation-request endpoints also
|
|
482
|
+
require an active contextual agent-call token.
|
|
483
|
+
- `POST /channels/updateMembers` adds or removes signed user capabilities from
|
|
484
|
+
the current chat. It requires `channels:manage`, rejects direct messages, and
|
|
485
|
+
applies the triggering user's ordinary channel-manager authorization.
|
|
486
|
+
- `POST /channels/createChannel` creates a private channel owned by the
|
|
487
|
+
triggering user, adds signed user capabilities as initial members, and may
|
|
488
|
+
post either a people-only opening message or an agent-audience prompt that
|
|
489
|
+
starts the calling agent. It also requires `channels:manage` and accepts an
|
|
490
|
+
optional `idempotencyKey` so a retried local request replays the same channel
|
|
491
|
+
and opening message instead of creating duplicates.
|
|
387
492
|
|
|
388
493
|
Container processes receive `HAPPY2_PLUGIN_API_URL` and
|
|
389
494
|
`HAPPY2_PLUGIN_API_TOKEN`. The URL is always
|
|
@@ -397,9 +502,11 @@ expose the host to an untrusted LAN should firewall
|
|
|
397
502
|
`plugins.host_api_port`; it is a container capability endpoint, not a public
|
|
398
503
|
service.
|
|
399
504
|
|
|
400
|
-
The token is an RS256 capability containing the installation ID, a
|
|
401
|
-
container-incarnation ID, and the exact
|
|
402
|
-
|
|
505
|
+
The ordinary token is an RS256 capability containing the installation ID, a
|
|
506
|
+
random CUID2 container-incarnation ID, and the installation's exact granted
|
|
507
|
+
permissions.
|
|
508
|
+
Token bytes are never stored. The incarnation ID is stored in
|
|
509
|
+
`plugin_installations` and also
|
|
403
510
|
attached to the OCI container as `dev.happy2.plugin-instance`. On each request,
|
|
404
511
|
Happy verifies the signature, matches the incarnation against the ready database
|
|
405
512
|
row, and confirms that the correspondingly labelled container is running. A
|
|
@@ -410,7 +517,10 @@ The token intentionally has no time expiration: its lifetime is exactly the
|
|
|
410
517
|
database-and-OCI incarnation lifetime, allowing a command to survive arbitrarily
|
|
411
518
|
many server restarts without persisting or rotating token bytes. Killing,
|
|
412
519
|
replacing, failing, or removing that incarnation immediately makes the token
|
|
413
|
-
unauthorized.
|
|
520
|
+
unauthorized. During one agent MCP call, Happy substitutes the bounded
|
|
521
|
+
contextual token described above; it expires after five minutes and cannot be
|
|
522
|
+
used outside that live container incarnation or after the exact durable external
|
|
523
|
+
tool call stops being in progress.
|
|
414
524
|
The capability is not a user session and the dedicated listener exposes no
|
|
415
525
|
ordinary `/v0` APIs.
|
|
416
526
|
|
|
@@ -422,19 +532,47 @@ request metadata:
|
|
|
422
532
|
"_meta": {
|
|
423
533
|
"happy2/chat": {
|
|
424
534
|
"id": "current-chat-cuid2",
|
|
425
|
-
"token": "signed-chat-capability-jwt"
|
|
426
|
-
|
|
535
|
+
"token": "signed-chat-capability-jwt",
|
|
536
|
+
"triggeredByUserId": "sender-cuid2"
|
|
537
|
+
},
|
|
538
|
+
"happy2/users": [
|
|
539
|
+
{
|
|
540
|
+
"id": "sender-cuid2",
|
|
541
|
+
"username": "ada",
|
|
542
|
+
"firstName": "Ada",
|
|
543
|
+
"kind": "human",
|
|
544
|
+
"triggeredTurn": true,
|
|
545
|
+
"token": "signed-user-capability-jwt"
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"id": "mentioned-user-cuid2",
|
|
549
|
+
"username": "grace",
|
|
550
|
+
"firstName": "Grace",
|
|
551
|
+
"kind": "human",
|
|
552
|
+
"triggeredTurn": false,
|
|
553
|
+
"token": "signed-user-capability-jwt"
|
|
554
|
+
}
|
|
555
|
+
]
|
|
427
556
|
}
|
|
428
557
|
}
|
|
429
558
|
```
|
|
430
559
|
|
|
431
|
-
The
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
token
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
560
|
+
The user list contains the message sender that triggered the exact agent turn,
|
|
561
|
+
followed by every concrete `@username` mention recorded on that message, with
|
|
562
|
+
duplicates removed. Special mentions such as `@here` do not create user
|
|
563
|
+
capabilities. Each RS256 user token has no expiration and is bound to the user
|
|
564
|
+
and the receiving plugin installation. A plugin may persist it; Happy does not
|
|
565
|
+
require or provide persistence by default. Host actions verify that the signed
|
|
566
|
+
user and the supplied user ID match.
|
|
567
|
+
|
|
568
|
+
The RS256 chat token also has no expiration. It is bound to that chat, the
|
|
569
|
+
triggering actor, the executing agent, and the specific plugin installation
|
|
570
|
+
receiving the call. Plugin host chat actions additionally require the running
|
|
571
|
+
installation's ordinary runtime token; presenting a chat or user token through
|
|
572
|
+
another installation is rejected. Uninstalling or replacing an installation
|
|
573
|
+
therefore prevents its old capabilities from being used by a new installation.
|
|
574
|
+
Chat IDs remain immutable and are supplied in metadata and API results for
|
|
575
|
+
correlation, never accepted as mutation input.
|
|
438
576
|
|
|
439
577
|
The bridge allows at most 128 simultaneous sessions server-wide and 16 per
|
|
440
578
|
authenticated user. Idle sessions close after 15 minutes; inbound requests and
|
|
@@ -454,28 +592,44 @@ persist the filesystem storage key, content type, byte size, width, height,
|
|
|
454
592
|
thumbhash, and SHA-256 checksum.
|
|
455
593
|
|
|
456
594
|
`plugin_installations` records a separate CUID2 and foreign key to `plugins`,
|
|
457
|
-
plus that instance's container/image choice, lifecycle state, error detail,
|
|
595
|
+
plus that instance's container/image choice, granted API permissions, lifecycle state, error detail,
|
|
458
596
|
installer, tool-sync timestamp, and timestamps. `plugin_mcp_tools` contains the
|
|
459
597
|
last complete MCP discovery keyed by installation and tool name.
|
|
460
598
|
`plugin_installation_variables` records each declared
|
|
461
599
|
value for one installation; secret rows contain authenticated ciphertext rather
|
|
462
600
|
than plaintext. No installation uses `shortName` as identity.
|
|
463
601
|
|
|
602
|
+
`plugin_management_requests` records the chat-scoped install/uninstall action,
|
|
603
|
+
requesting agent call, validated publisher metadata, exact staged package
|
|
604
|
+
coordinates, resolution, audit-related sync sequence, and deterministic target
|
|
605
|
+
or installation ID. Actionable staged packages live beneath the private plugin
|
|
606
|
+
package store and are revalidated by path and digest before image reads or
|
|
607
|
+
approval. They are reclaimed on approval, denial, failure, and restart cleanup;
|
|
608
|
+
terminal history retains metadata and audit evidence rather than package bytes.
|
|
609
|
+
|
|
464
610
|
The built-in catalog and durable system plugin are deliberately independent.
|
|
465
|
-
Persisted rows use `source_kind = 'builtin'`
|
|
611
|
+
Persisted rows use `source_kind = 'builtin'`, `archive`, or `link`. During
|
|
466
612
|
startup, the server compares those rows with the current built-in catalog. If a
|
|
467
613
|
bundle was removed from the server, its installations, encrypted variables,
|
|
468
614
|
system-plugin row, private package/image snapshot, and any named local containers
|
|
469
|
-
are removed before the remaining runtimes start.
|
|
470
|
-
not participate in this catalog-pruning rule.
|
|
615
|
+
are removed before the remaining runtimes start. Archive- and link-sourced
|
|
616
|
+
plugins do not participate in this catalog-pruning rule.
|
|
617
|
+
|
|
618
|
+
Before each agent turn, skills from ready installations are integrity-checked
|
|
619
|
+
against their immutable package digest and reconciled under
|
|
620
|
+
`.agents/skills/happy2-plugins/<pluginId>-<skillName>` in that exact agent home.
|
|
621
|
+
Rig recursively discovers skills below `.agents/skills` on every agent loop, so
|
|
622
|
+
the published frontmatter name and immutable package files stay unchanged.
|
|
623
|
+
Happy owns only the `happy2-plugins` subtree; user and project skills elsewhere
|
|
624
|
+
are left untouched. Uninstalling the final ready installation removes that
|
|
625
|
+
plugin's skills on the next turn.
|
|
471
626
|
|
|
472
627
|
When the catalog contains a different digest for a persisted plugin's
|
|
473
628
|
`shortName`, reads set `updateAvailable: true`; they do not mutate or restart its
|
|
474
|
-
installations. A future upgrade action can
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
old snapshot continues to run.
|
|
629
|
+
installations. A future upgrade action can validate a replacement package, stage
|
|
630
|
+
a new immutable package/image snapshot, and atomically replace the system plugin
|
|
631
|
+
version before reconciling all linked installations. Until that action exists,
|
|
632
|
+
upgrades are advertised only and the old snapshot continues to run.
|
|
479
633
|
|
|
480
634
|
Configured installed-package storage:
|
|
481
635
|
|
|
@@ -15,6 +15,7 @@ export { userCreateProfile } from "./modules/user/userCreateProfile.js";
|
|
|
15
15
|
export { syncInitialize } from "./modules/sync/syncInitialize.js";
|
|
16
16
|
export { AesGcmSecretProtector } from "./modules/integrations/secrets.js";
|
|
17
17
|
export { NodeWebhookTransport } from "./modules/integrations/transport.js";
|
|
18
|
+
export { NodePluginPackageLinkDownloader, type PluginPackageLinkDownload, type PluginPackageLinkDownloader, } from "./modules/plugin/packageLinkDownloader.js";
|
|
18
19
|
export * from "./modules/integrations/types.js";
|
|
19
20
|
export type { ResolvedWebhookUrl, WebhookUrlPolicy } from "./modules/integrations/ssrf.js";
|
|
20
21
|
export * from "./modules/operations/types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,cAAc,iCAAiC,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EACH,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,GACpC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EACH,+BAA+B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,GACnC,MAAM,2CAA2C,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EACH,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,GACpC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -12,6 +12,7 @@ export { userCreateProfile } from "./modules/user/userCreateProfile.js";
|
|
|
12
12
|
export { syncInitialize } from "./modules/sync/syncInitialize.js";
|
|
13
13
|
export { AesGcmSecretProtector } from "./modules/integrations/secrets.js";
|
|
14
14
|
export { NodeWebhookTransport } from "./modules/integrations/transport.js";
|
|
15
|
+
export { NodePluginPackageLinkDownloader, } from "./modules/plugin/packageLinkDownloader.js";
|
|
15
16
|
export * from "./modules/integrations/types.js";
|
|
16
17
|
export * from "./modules/operations/types.js";
|
|
17
18
|
export { FileStorage } from "./modules/files/storage.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAA6B,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAyB,MAAM,iBAAiB,CAAC;AAI/E,OAAO,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAA8B,MAAM,4BAA4B,CAAC;AACrF,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EACH,2BAA2B,GAI9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,uBAAuB,GAK1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAA6B,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAyB,MAAM,iBAAiB,CAAC;AAI/E,OAAO,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EACH,+BAA+B,GAGlC,MAAM,2CAA2C,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAA8B,MAAM,4BAA4B,CAAC;AACrF,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EACH,2BAA2B,GAI9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,uBAAuB,GAK1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DrizzleExecutor } from "../drizzle.js";
|
|
2
|
+
/** Derives one session's host-mounted isolated home from its durable Rig binding cwd and does not mutate durable state. This boundary centralizes the sandbox layout contract used by plugin skill reconciliation. */
|
|
3
|
+
export declare function agentSkillHomeGet(executor: DrizzleExecutor, sessionId: string): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=agentSkillHomeGet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentSkillHomeGet.d.ts","sourceRoot":"","sources":["../../../sources/modules/agent/agentSkillHomeGet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,sNAAsN;AACtN,wBAAsB,iBAAiB,CACnC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAQjB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { eq } from "drizzle-orm";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { agentRigBindings } from "../schema.js";
|
|
4
|
+
/** Derives one session's host-mounted isolated home from its durable Rig binding cwd and does not mutate durable state. This boundary centralizes the sandbox layout contract used by plugin skill reconciliation. */
|
|
5
|
+
export async function agentSkillHomeGet(executor, sessionId) {
|
|
6
|
+
const [binding] = await executor
|
|
7
|
+
.select({ cwd: agentRigBindings.cwd })
|
|
8
|
+
.from(agentRigBindings)
|
|
9
|
+
.where(eq(agentRigBindings.sessionId, sessionId))
|
|
10
|
+
.limit(1);
|
|
11
|
+
if (!binding)
|
|
12
|
+
throw new Error("Agent Rig binding was not found for skill reconciliation");
|
|
13
|
+
return join(dirname(binding.cwd), "home");
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=agentSkillHomeGet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentSkillHomeGet.js","sourceRoot":"","sources":["../../../sources/modules/agent/agentSkillHomeGet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,sNAAsN;AACtN,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,QAAyB,EACzB,SAAiB;IAEjB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,QAAQ;SAC3B,MAAM,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,EAAE,CAAC;SACrC,IAAI,CAAC,gBAAgB,CAAC;SACtB,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;SAChD,KAAK,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentSkillHomeGet.test.d.ts","sourceRoot":"","sources":["../../../sources/modules/agent/agentSkillHomeGet.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { agentSkillHomeGet } from "./agentSkillHomeGet.js";
|
|
3
|
+
function executorWithBinding(binding) {
|
|
4
|
+
const limit = vi.fn().mockResolvedValue(binding ? [binding] : []);
|
|
5
|
+
const where = vi.fn(() => ({ limit }));
|
|
6
|
+
const from = vi.fn(() => ({ where }));
|
|
7
|
+
return { select: vi.fn(() => ({ from })) };
|
|
8
|
+
}
|
|
9
|
+
describe("agentSkillHomeGet", () => {
|
|
10
|
+
it("derives the isolated home beside the durable Rig working directory", async () => {
|
|
11
|
+
await expect(agentSkillHomeGet(executorWithBinding({ cwd: "/sessions/run/worktree" }), "session-1")).resolves.toBe("/sessions/run/home");
|
|
12
|
+
});
|
|
13
|
+
it("rejects sessions without a durable Rig binding", async () => {
|
|
14
|
+
await expect(agentSkillHomeGet(executorWithBinding(undefined), "missing")).rejects.toThrow("Agent Rig binding was not found for skill reconciliation");
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=agentSkillHomeGet.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentSkillHomeGet.test.js","sourceRoot":"","sources":["../../../sources/modules/agent/agentSkillHomeGet.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,SAAS,mBAAmB,CAAC,OAAoC;IAC7D,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAgC,CAAC;AAC7E,CAAC;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,MAAM,CACR,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,WAAW,CAAC,CACzF,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACtF,0DAA0D,CAC7D,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DrizzleExecutor } from "../drizzle.js";
|
|
2
|
+
export interface AgentPluginReferencedUser {
|
|
3
|
+
id: string;
|
|
4
|
+
username: string;
|
|
5
|
+
firstName: string;
|
|
6
|
+
lastName?: string;
|
|
7
|
+
kind: "human" | "agent";
|
|
8
|
+
triggeredTurn: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Resolves the exact running agent turn, its triggering sender, and every concrete user mention recorded on that message.
|
|
12
|
+
* This read-only boundary keeps plugin capabilities tied to durable turn provenance instead of inferring authority from a reusable Rig session.
|
|
13
|
+
*/
|
|
14
|
+
export declare function agentTurnGetPluginContext(executor: DrizzleExecutor, input: {
|
|
15
|
+
runId: string;
|
|
16
|
+
sessionId: string;
|
|
17
|
+
}): Promise<{
|
|
18
|
+
agentUserId: string;
|
|
19
|
+
chatId: string;
|
|
20
|
+
triggeredByUserId: string;
|
|
21
|
+
users: AgentPluginReferencedUser[];
|
|
22
|
+
} | undefined>;
|
|
23
|
+
//# sourceMappingURL=agentTurnGetPluginContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentTurnGetPluginContext.d.ts","sourceRoot":"","sources":["../../../sources/modules/agent/agentTurnGetPluginContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC3C,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CACJ;IACI,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACtC,GACD,SAAS,CACd,CAuEA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { and, eq, isNull, or } from "drizzle-orm";
|
|
2
|
+
import { agentTurns, messageMentions, messages, users } from "../schema.js";
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the exact running agent turn, its triggering sender, and every concrete user mention recorded on that message.
|
|
5
|
+
* This read-only boundary keeps plugin capabilities tied to durable turn provenance instead of inferring authority from a reusable Rig session.
|
|
6
|
+
*/
|
|
7
|
+
export async function agentTurnGetPluginContext(executor, input) {
|
|
8
|
+
const turns = await executor
|
|
9
|
+
.select({
|
|
10
|
+
agentUserId: agentTurns.agentUserId,
|
|
11
|
+
chatId: agentTurns.chatId,
|
|
12
|
+
userMessageId: agentTurns.userMessageId,
|
|
13
|
+
triggeredByUserId: messages.senderUserId,
|
|
14
|
+
username: users.username,
|
|
15
|
+
firstName: users.firstName,
|
|
16
|
+
lastName: users.lastName,
|
|
17
|
+
kind: users.kind,
|
|
18
|
+
})
|
|
19
|
+
.from(agentTurns)
|
|
20
|
+
.innerJoin(messages, eq(messages.id, agentTurns.userMessageId))
|
|
21
|
+
.innerJoin(users, eq(users.id, messages.senderUserId))
|
|
22
|
+
.where(and(eq(agentTurns.sessionId, input.sessionId), eq(agentTurns.status, "running"), or(isNull(agentTurns.runId), eq(agentTurns.runId, input.runId))))
|
|
23
|
+
.limit(2);
|
|
24
|
+
if (turns.length !== 1)
|
|
25
|
+
return undefined;
|
|
26
|
+
const turn = turns[0];
|
|
27
|
+
if (!turn.triggeredByUserId || (turn.kind !== "human" && turn.kind !== "agent"))
|
|
28
|
+
return undefined;
|
|
29
|
+
const mentioned = await executor
|
|
30
|
+
.select({
|
|
31
|
+
id: users.id,
|
|
32
|
+
username: users.username,
|
|
33
|
+
firstName: users.firstName,
|
|
34
|
+
lastName: users.lastName,
|
|
35
|
+
kind: users.kind,
|
|
36
|
+
})
|
|
37
|
+
.from(messageMentions)
|
|
38
|
+
.innerJoin(users, eq(users.id, messageMentions.mentionedUserId))
|
|
39
|
+
.where(and(eq(messageMentions.messageId, turn.userMessageId), eq(messageMentions.kind, "user")))
|
|
40
|
+
.orderBy(messageMentions.startOffset, messageMentions.id);
|
|
41
|
+
const referenced = new Map();
|
|
42
|
+
referenced.set(turn.triggeredByUserId, {
|
|
43
|
+
id: turn.triggeredByUserId,
|
|
44
|
+
username: turn.username,
|
|
45
|
+
firstName: turn.firstName,
|
|
46
|
+
...(turn.lastName ? { lastName: turn.lastName } : {}),
|
|
47
|
+
kind: turn.kind,
|
|
48
|
+
triggeredTurn: true,
|
|
49
|
+
});
|
|
50
|
+
for (const user of mentioned) {
|
|
51
|
+
if (user.kind !== "human" && user.kind !== "agent")
|
|
52
|
+
continue;
|
|
53
|
+
const existing = referenced.get(user.id);
|
|
54
|
+
referenced.set(user.id, {
|
|
55
|
+
id: user.id,
|
|
56
|
+
username: user.username,
|
|
57
|
+
firstName: user.firstName,
|
|
58
|
+
...(user.lastName ? { lastName: user.lastName } : {}),
|
|
59
|
+
kind: user.kind,
|
|
60
|
+
triggeredTurn: existing?.triggeredTurn ?? false,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
agentUserId: turn.agentUserId,
|
|
65
|
+
chatId: turn.chatId,
|
|
66
|
+
triggeredByUserId: turn.triggeredByUserId,
|
|
67
|
+
users: [...referenced.values()],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=agentTurnGetPluginContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentTurnGetPluginContext.js","sourceRoot":"","sources":["../../../sources/modules/agent/agentTurnGetPluginContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { type AgentSecretSummary, type MutationHint, type UserSummary } from "..
|
|
|
3
3
|
import { type PubSub } from "../realtime/index.js";
|
|
4
4
|
import { RigDaemonClient } from "./daemon.js";
|
|
5
5
|
import type { AgentSandboxRuntimeResolver } from "../sandbox/types.js";
|
|
6
|
-
import type { PluginFunctionDefinition, PluginFunctionResult, PluginSkillDefinition } from "../plugin/types.js";
|
|
6
|
+
import type { PluginFunctionDefinition, PluginFunctionResult, PluginCallContext, PluginSkillDefinition } from "../plugin/types.js";
|
|
7
7
|
interface AgentSecretCreateInput {
|
|
8
8
|
actorUserId: string;
|
|
9
9
|
description: string;
|
|
@@ -21,9 +21,7 @@ interface AgentSecretChannelInput extends AgentSecretTargetInput {
|
|
|
21
21
|
channelId: string;
|
|
22
22
|
}
|
|
23
23
|
interface AgentPluginCapabilities {
|
|
24
|
-
callFunction(functionName: string, args: unknown, context:
|
|
25
|
-
chatId: string;
|
|
26
|
-
}, signal?: AbortSignal): Promise<PluginFunctionResult>;
|
|
24
|
+
callFunction(functionName: string, args: unknown, context: PluginCallContext, signal?: AbortSignal): Promise<PluginFunctionResult>;
|
|
27
25
|
listFunctions(signal?: AbortSignal): Promise<readonly PluginFunctionDefinition[]>;
|
|
28
26
|
listSkills(signal?: AbortSignal): Promise<readonly PluginSkillDefinition[]>;
|
|
29
27
|
readSkill(skill: PluginSkillDefinition, signal?: AbortSignal): Promise<PluginFunctionResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../sources/modules/agents/service.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAYrD,OAAO,EAEH,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,WAAW,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAA2C,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAEH,eAAe,EAMlB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAyB,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EACR,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACxB,MAAM,oBAAoB,CAAC;AA4D5B,UAAU,sBAAsB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,EAAE,EAAE,MAAM,CAAC;CACd;AACD,UAAU,sBAAsB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACpB;AACD,UAAU,qBAAsB,SAAQ,sBAAsB;IAC1D,WAAW,EAAE,MAAM,CAAC;CACvB;AACD,UAAU,uBAAwB,SAAQ,sBAAsB;IAC5D,SAAS,EAAE,MAAM,CAAC;CACrB;AA0BD,UAAU,uBAAuB;IAC7B,YAAY,CACR,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../sources/modules/agents/service.ts"],"names":[],"mappings":"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"}
|