@agent-native/core 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/a2a/caller-auth.d.ts +12 -0
- package/dist/a2a/caller-auth.d.ts.map +1 -0
- package/dist/a2a/caller-auth.js +54 -0
- package/dist/a2a/caller-auth.js.map +1 -0
- package/dist/action.d.ts +17 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +22 -0
- package/dist/action.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +32 -19
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +3 -3
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +17 -6
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/client/components/ui/dropdown-menu.js +34 -0
- package/dist/client/components/ui/dropdown-menu.js.map +1 -0
- package/dist/client/composer/TiptapComposer.js +1 -1
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.js +2 -0
- package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
- package/dist/client/extensions/ExtensionSlot.js +14 -1
- package/dist/client/extensions/ExtensionSlot.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +2 -0
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.js +2 -2
- package/dist/client/extensions/ExtensionsListPage.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +6 -17
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/extensions/iframe-bridge.d.ts.map +1 -1
- package/dist/client/extensions/iframe-bridge.js +5 -8
- package/dist/client/extensions/iframe-bridge.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +7 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +8 -3
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +153 -20
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/org/hooks.d.ts +29 -1
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +39 -2
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/org/index.d.ts +2 -1
- package/dist/client/org/index.d.ts.map +1 -1
- package/dist/client/org/index.js +1 -1
- package/dist/client/org/index.js.map +1 -1
- package/dist/client/resources/ResourceTree.d.ts.map +1 -1
- package/dist/client/resources/ResourceTree.js +11 -3
- package/dist/client/resources/ResourceTree.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +21 -5
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +39 -3
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +20 -49
- package/dist/deploy/build.js.map +1 -1
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/org/accept-pending.d.ts.map +1 -1
- package/dist/org/accept-pending.js +5 -3
- package/dist/org/accept-pending.js.map +1 -1
- package/dist/org/free-email-providers.d.ts +18 -0
- package/dist/org/free-email-providers.d.ts.map +1 -0
- package/dist/org/free-email-providers.js +124 -0
- package/dist/org/free-email-providers.js.map +1 -0
- package/dist/org/handlers.d.ts +29 -5
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +178 -37
- package/dist/org/handlers.js.map +1 -1
- package/dist/org/index.d.ts +2 -1
- package/dist/org/index.d.ts.map +1 -1
- package/dist/org/index.js +2 -1
- package/dist/org/index.js.map +1 -1
- package/dist/org/migrations.d.ts.map +1 -1
- package/dist/org/migrations.js +4 -0
- package/dist/org/migrations.js.map +1 -1
- package/dist/org/plugin.d.ts.map +1 -1
- package/dist/org/plugin.js +13 -4
- package/dist/org/plugin.js.map +1 -1
- package/dist/org/schema.d.ts +19 -0
- package/dist/org/schema.d.ts.map +1 -1
- package/dist/org/schema.js +1 -0
- package/dist/org/schema.js.map +1 -1
- package/dist/org/types.d.ts +1 -0
- package/dist/org/types.d.ts.map +1 -1
- package/dist/org/types.js.map +1 -1
- package/dist/resources/metadata.d.ts +1 -0
- package/dist/resources/metadata.d.ts.map +1 -1
- package/dist/resources/metadata.js +13 -3
- package/dist/resources/metadata.js.map +1 -1
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +44 -6
- package/dist/resources/store.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +38 -11
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +10 -3
- package/dist/server/google-oauth.js.map +1 -1
- package/package.json +2 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,4BAA4B,EAC5B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,4BAA4B,EAC5B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,EAAE,EACF,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,cAAc,EACd,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,SAAS,EACT,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,IAAI,GACL,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Import everything from "@agent-native/core".
|
|
3
3
|
// Agent (production mode)
|
|
4
4
|
export { createProductionAgentHandler, DEFAULT_MODEL, } from "./agent/index.js";
|
|
5
|
-
export { defineAction } from "./action.js";
|
|
5
|
+
export { defineAction, AgentActionStopError, isAgentActionStopError, } from "./action.js";
|
|
6
6
|
export { createDevScriptRegistry } from "./scripts/dev/index.js";
|
|
7
7
|
export { createAgentChatPlugin, defaultAgentChatPlugin, } from "./server/agent-chat-plugin.js";
|
|
8
8
|
// Server
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,+CAA+C;AAE/C,0BAA0B;AAC1B,OAAO,EACL,4BAA4B,EAS5B,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,+CAA+C;AAE/C,0BAA0B;AAC1B,OAAO,EACL,4BAA4B,EAS5B,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,+BAA+B,CAAC;AAEvC,SAAS;AACT,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,GAKX,MAAM,mBAAmB,CAAC;AAE3B,SAAS;AACT,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,EAAE,EACF,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EAMpB,cAAc,EACd,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EACL,SAAS,GAGV,MAAM,mBAAmB,CAAC;AAE3B,uBAAuB;AACvB,OAAO,EACL,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,GAMd,MAAM,kBAAkB,CAAC;AAE1B,UAAU;AACV,OAAO,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,IAAI,GACL,MAAM,oBAAoB,CAAC;AAE5B,4EAA4E;AAC5E,wEAAwE;AACxE,mCAAmC;AACnC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,eAAe,GAMhB,MAAM,oBAAoB,CAAC","sourcesContent":["// Framework for agent-native apps.\n// Import everything from \"@agent-native/core\".\n\n// Agent (production mode)\nexport {\n createProductionAgentHandler,\n type ActionEntry,\n type ScriptEntry,\n type ProductionAgentOptions,\n type ActionTool,\n type ScriptTool,\n type AgentMessage,\n type AgentChatRequest,\n type AgentChatEvent,\n DEFAULT_MODEL,\n} from \"./agent/index.js\";\nexport {\n defineAction,\n AgentActionStopError,\n isAgentActionStopError,\n type ActionHttpConfig,\n type AgentActionStopOptions,\n} from \"./action.js\";\nexport { createDevScriptRegistry } from \"./scripts/dev/index.js\";\nexport {\n createAgentChatPlugin,\n defaultAgentChatPlugin,\n type AgentChatPluginOptions,\n} from \"./server/agent-chat-plugin.js\";\n\n// Server\nexport {\n createServer,\n createSSEHandler,\n defineNitroPlugin,\n autoMountAuth,\n getSession,\n type CreateServerOptions,\n type SSEHandlerOptions,\n type AuthSession,\n type AuthOptions,\n} from \"./server/index.js\";\n\n// Client\nexport {\n sendToAgentChat,\n useAgentChatGenerating,\n useDevMode,\n useSendToAgentChat,\n CodeRequiredDialog,\n useDbSync,\n useFileWatcher,\n cn,\n ApiKeySettings,\n useSession,\n useProductionAgent,\n ProductionAgentPanel,\n type AgentChatMessage,\n type CodeRequiredDialogProps,\n type ProductionAgentMessage,\n type UseProductionAgentResult,\n type ProductionAgentPanelProps,\n useActionQuery,\n useActionMutation,\n} from \"./client/index.js\";\n\n// Shared (isomorphic)\nexport {\n agentChat,\n type AgentChatCallOptions,\n type AgentChatResponse,\n} from \"./shared/index.js\";\n\n// Token usage tracking\nexport {\n recordUsage,\n getUsageSummary,\n getUserUsageCents,\n calculateCost,\n type UsageRecord,\n type UsageSummary,\n type UsageBucket,\n type DailyBucket,\n type UsageRecentEntry,\n} from \"./usage/store.js\";\n\n// Scripts\nexport {\n runScript,\n loadEnv,\n parseArgs,\n camelCaseArgs,\n isValidPath,\n isValidProjectPath,\n ensureDir,\n fail,\n} from \"./scripts/index.js\";\n\n// Secrets registry — import from \"@agent-native/core/secrets\" when possible\n// (the subpath keeps the top-level entry point lean), but re-export the\n// public API here for convenience.\nexport {\n registerRequiredSecret,\n listRequiredSecrets,\n getRequiredSecret,\n readAppSecret,\n writeAppSecret,\n deleteAppSecret,\n type RegisteredSecret,\n type SecretScope,\n type SecretKind,\n type SecretValidator,\n type SecretRef,\n} from \"./secrets/index.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accept-pending.d.ts","sourceRoot":"","sources":["../../src/org/accept-pending.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"accept-pending.d.ts","sourceRoot":"","sources":["../../src/org/accept-pending.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CA8D9B"}
|
|
@@ -24,7 +24,7 @@ export async function acceptPendingInvitationsForEmail(rawEmail) {
|
|
|
24
24
|
let rows = [];
|
|
25
25
|
try {
|
|
26
26
|
const res = await db.execute({
|
|
27
|
-
sql: `SELECT id, org_id AS "orgId" FROM org_invitations
|
|
27
|
+
sql: `SELECT id, org_id AS "orgId", role FROM org_invitations
|
|
28
28
|
WHERE LOWER(email) = ? AND status = 'pending'
|
|
29
29
|
ORDER BY created_at DESC`,
|
|
30
30
|
args: [email],
|
|
@@ -32,6 +32,7 @@ export async function acceptPendingInvitationsForEmail(rawEmail) {
|
|
|
32
32
|
rows = res.rows.map((r) => ({
|
|
33
33
|
id: String(r.id),
|
|
34
34
|
orgId: String(r.orgId ?? r.org_id),
|
|
35
|
+
role: r.role == null ? null : String(r.role),
|
|
35
36
|
}));
|
|
36
37
|
}
|
|
37
38
|
catch (err) {
|
|
@@ -48,9 +49,10 @@ export async function acceptPendingInvitationsForEmail(rawEmail) {
|
|
|
48
49
|
args: [inv.orgId, email],
|
|
49
50
|
});
|
|
50
51
|
if (existing.rows.length === 0) {
|
|
52
|
+
const role = inv.role === "admin" ? "admin" : "member";
|
|
51
53
|
await db.execute({
|
|
52
|
-
sql: `INSERT INTO org_members (id, org_id, email, role, joined_at) VALUES (?, ?, ?,
|
|
53
|
-
args: [nanoid(), inv.orgId, email, Date.now()],
|
|
54
|
+
sql: `INSERT INTO org_members (id, org_id, email, role, joined_at) VALUES (?, ?, ?, ?, ?)`,
|
|
55
|
+
args: [nanoid(), inv.orgId, email, role, Date.now()],
|
|
54
56
|
});
|
|
55
57
|
}
|
|
56
58
|
await db.execute({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accept-pending.js","sourceRoot":"","sources":["../../src/org/accept-pending.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,MAAM,GAAG,GAAW,EAAE,CAC1B,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IACnD,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAOhE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,QAAgB;IAEhB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAEvB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"accept-pending.js","sourceRoot":"","sources":["../../src/org/accept-pending.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDbExec } from \"../db/client.js\";\nimport { putUserSetting } from \"../settings/user-settings.js\";\n\nconst nanoid = (): string =>\n globalThis.crypto?.randomUUID?.().replace(/-/g, \"\") ??\n Math.random().toString(36).slice(2) + Date.now().toString(36);\n\nexport interface AcceptPendingResult {\n accepted: Array<{ invitationId: string; orgId: string }>;\n activeOrgId: string | null;\n}\n\n/**\n * Accept every pending `org_invitations` row for this email:\n * - insert a matching `org_members` row (role 'member') when one doesn't exist\n * - flip the invitation's status to 'accepted'\n * - set the user's `active-org-id` to the most-recently-created invite\n *\n * Called from the Better Auth `user.create.after` hook so that a user who signs\n * up with an email they were just invited to lands in the org immediately,\n * rather than seeing a blank-slate app until they navigate to /team.\n *\n * Safe to call when the org tables don't exist (some templates don't use the\n * org module) — it swallows the \"no such table\" error and returns empty.\n */\nexport async function acceptPendingInvitationsForEmail(\n rawEmail: string,\n): Promise<AcceptPendingResult> {\n const email = rawEmail.trim().toLowerCase();\n if (!email) {\n return { accepted: [], activeOrgId: null };\n }\n\n const db = getDbExec();\n\n let rows: Array<{ id: string; orgId: string; role: string | null }> = [];\n try {\n const res = await db.execute({\n sql: `SELECT id, org_id AS \"orgId\", role FROM org_invitations\n WHERE LOWER(email) = ? AND status = 'pending'\n ORDER BY created_at DESC`,\n args: [email],\n });\n rows = res.rows.map((r: any) => ({\n id: String(r.id),\n orgId: String(r.orgId ?? r.org_id),\n role: r.role == null ? null : String(r.role),\n }));\n } catch (err) {\n // Template doesn't use the org module / tables not migrated yet.\n return { accepted: [], activeOrgId: null };\n }\n\n if (rows.length === 0) {\n return { accepted: [], activeOrgId: null };\n }\n\n const accepted: AcceptPendingResult[\"accepted\"] = [];\n for (const inv of rows) {\n const existing = await db.execute({\n sql: `SELECT 1 FROM org_members WHERE org_id = ? AND LOWER(email) = ? LIMIT 1`,\n args: [inv.orgId, email],\n });\n if (existing.rows.length === 0) {\n const role = inv.role === \"admin\" ? \"admin\" : \"member\";\n await db.execute({\n sql: `INSERT INTO org_members (id, org_id, email, role, joined_at) VALUES (?, ?, ?, ?, ?)`,\n args: [nanoid(), inv.orgId, email, role, Date.now()],\n });\n }\n await db.execute({\n sql: `UPDATE org_invitations SET status = 'accepted' WHERE id = ?`,\n args: [inv.id],\n });\n accepted.push({ invitationId: inv.id, orgId: inv.orgId });\n }\n\n // Set active-org-id to the most recent invite so the user lands in a\n // populated workspace on first load.\n const activeOrgId = accepted[0]?.orgId ?? null;\n if (activeOrgId) {\n try {\n await putUserSetting(email, \"active-org-id\", { orgId: activeOrgId });\n } catch {\n // user_settings table might not exist in a minimal template — not fatal.\n }\n }\n\n return { accepted, activeOrgId };\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Free / public mailbox providers that should NOT be allowed as an
|
|
3
|
+
* organization's auto-join domain.
|
|
4
|
+
*
|
|
5
|
+
* Why: the auto-join feature lets anyone who signs up with an email at the
|
|
6
|
+
* org's `allowed_domain` join the org without an invitation. That is safe
|
|
7
|
+
* for company-owned domains (`acme.com`) — the company controls who gets
|
|
8
|
+
* an `@acme.com` address. It is catastrophic for shared mailbox providers
|
|
9
|
+
* (`gmail.com`, `outlook.com`, etc.) — anyone in the world can create a
|
|
10
|
+
* matching address and would be auto-added to the org.
|
|
11
|
+
*
|
|
12
|
+
* The list intentionally errs on the side of well-known providers; if a
|
|
13
|
+
* future provider isn't here we'll learn from a bug report rather than
|
|
14
|
+
* pretend we have an exhaustive registry.
|
|
15
|
+
*/
|
|
16
|
+
export declare const FREE_EMAIL_PROVIDER_DOMAINS: ReadonlySet<string>;
|
|
17
|
+
export declare function isFreeEmailProvider(domain: string): boolean;
|
|
18
|
+
//# sourceMappingURL=free-email-providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"free-email-providers.d.ts","sourceRoot":"","sources":["../../src/org/free-email-providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAwG1D,CAAC;AAEH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3D"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Free / public mailbox providers that should NOT be allowed as an
|
|
3
|
+
* organization's auto-join domain.
|
|
4
|
+
*
|
|
5
|
+
* Why: the auto-join feature lets anyone who signs up with an email at the
|
|
6
|
+
* org's `allowed_domain` join the org without an invitation. That is safe
|
|
7
|
+
* for company-owned domains (`acme.com`) — the company controls who gets
|
|
8
|
+
* an `@acme.com` address. It is catastrophic for shared mailbox providers
|
|
9
|
+
* (`gmail.com`, `outlook.com`, etc.) — anyone in the world can create a
|
|
10
|
+
* matching address and would be auto-added to the org.
|
|
11
|
+
*
|
|
12
|
+
* The list intentionally errs on the side of well-known providers; if a
|
|
13
|
+
* future provider isn't here we'll learn from a bug report rather than
|
|
14
|
+
* pretend we have an exhaustive registry.
|
|
15
|
+
*/
|
|
16
|
+
export const FREE_EMAIL_PROVIDER_DOMAINS = new Set([
|
|
17
|
+
// Google
|
|
18
|
+
"gmail.com",
|
|
19
|
+
"googlemail.com",
|
|
20
|
+
// Microsoft
|
|
21
|
+
"outlook.com",
|
|
22
|
+
"hotmail.com",
|
|
23
|
+
"live.com",
|
|
24
|
+
"msn.com",
|
|
25
|
+
"outlook.co.uk",
|
|
26
|
+
"hotmail.co.uk",
|
|
27
|
+
"live.co.uk",
|
|
28
|
+
"outlook.de",
|
|
29
|
+
"hotmail.de",
|
|
30
|
+
"live.de",
|
|
31
|
+
"outlook.fr",
|
|
32
|
+
"hotmail.fr",
|
|
33
|
+
"live.fr",
|
|
34
|
+
// Yahoo
|
|
35
|
+
"yahoo.com",
|
|
36
|
+
"yahoo.co.uk",
|
|
37
|
+
"yahoo.co.jp",
|
|
38
|
+
"yahoo.fr",
|
|
39
|
+
"yahoo.de",
|
|
40
|
+
"yahoo.it",
|
|
41
|
+
"yahoo.es",
|
|
42
|
+
"yahoo.ca",
|
|
43
|
+
"yahoo.com.au",
|
|
44
|
+
"yahoo.com.br",
|
|
45
|
+
"ymail.com",
|
|
46
|
+
"rocketmail.com",
|
|
47
|
+
// Apple
|
|
48
|
+
"icloud.com",
|
|
49
|
+
"me.com",
|
|
50
|
+
"mac.com",
|
|
51
|
+
// AOL / Verizon
|
|
52
|
+
"aol.com",
|
|
53
|
+
"aim.com",
|
|
54
|
+
// Privacy / disposable / forwarding
|
|
55
|
+
"proton.me",
|
|
56
|
+
"protonmail.com",
|
|
57
|
+
"pm.me",
|
|
58
|
+
"tutanota.com",
|
|
59
|
+
"tutanota.de",
|
|
60
|
+
"tuta.io",
|
|
61
|
+
"fastmail.com",
|
|
62
|
+
"fastmail.fm",
|
|
63
|
+
"duck.com",
|
|
64
|
+
"hey.com",
|
|
65
|
+
// Russian / Chinese majors
|
|
66
|
+
"yandex.com",
|
|
67
|
+
"yandex.ru",
|
|
68
|
+
"mail.ru",
|
|
69
|
+
"list.ru",
|
|
70
|
+
"bk.ru",
|
|
71
|
+
"inbox.ru",
|
|
72
|
+
"qq.com",
|
|
73
|
+
"163.com",
|
|
74
|
+
"126.com",
|
|
75
|
+
"sina.com",
|
|
76
|
+
"sina.cn",
|
|
77
|
+
"sohu.com",
|
|
78
|
+
// ISP / legacy / misc
|
|
79
|
+
"gmx.com",
|
|
80
|
+
"gmx.de",
|
|
81
|
+
"gmx.net",
|
|
82
|
+
"web.de",
|
|
83
|
+
"t-online.de",
|
|
84
|
+
"freenet.de",
|
|
85
|
+
"zoho.com",
|
|
86
|
+
"zohomail.com",
|
|
87
|
+
"rediffmail.com",
|
|
88
|
+
"mail.com",
|
|
89
|
+
"att.net",
|
|
90
|
+
"comcast.net",
|
|
91
|
+
"verizon.net",
|
|
92
|
+
"sbcglobal.net",
|
|
93
|
+
"bellsouth.net",
|
|
94
|
+
"cox.net",
|
|
95
|
+
"earthlink.net",
|
|
96
|
+
"btinternet.com",
|
|
97
|
+
"btopenworld.com",
|
|
98
|
+
"talktalk.net",
|
|
99
|
+
"sky.com",
|
|
100
|
+
"ntlworld.com",
|
|
101
|
+
"virginmedia.com",
|
|
102
|
+
"free.fr",
|
|
103
|
+
"orange.fr",
|
|
104
|
+
"wanadoo.fr",
|
|
105
|
+
"laposte.net",
|
|
106
|
+
"libero.it",
|
|
107
|
+
"tiscali.it",
|
|
108
|
+
"uol.com.br",
|
|
109
|
+
"bol.com.br",
|
|
110
|
+
"terra.com.br",
|
|
111
|
+
// Disposable
|
|
112
|
+
"mailinator.com",
|
|
113
|
+
"guerrillamail.com",
|
|
114
|
+
"10minutemail.com",
|
|
115
|
+
"trashmail.com",
|
|
116
|
+
"yopmail.com",
|
|
117
|
+
"tempmail.com",
|
|
118
|
+
"throwawaymail.com",
|
|
119
|
+
"sharklasers.com",
|
|
120
|
+
]);
|
|
121
|
+
export function isFreeEmailProvider(domain) {
|
|
122
|
+
return FREE_EMAIL_PROVIDER_DOMAINS.has(domain.trim().toLowerCase());
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=free-email-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"free-email-providers.js","sourceRoot":"","sources":["../../src/org/free-email-providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAwB,IAAI,GAAG,CAAC;IACtE,SAAS;IACT,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,UAAU;IACV,SAAS;IACT,eAAe;IACf,eAAe;IACf,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,WAAW;IACX,aAAa;IACb,aAAa;IACb,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,cAAc;IACd,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,oCAAoC;IACpC,WAAW;IACX,gBAAgB;IAChB,OAAO;IACP,cAAc;IACd,aAAa;IACb,SAAS;IACT,cAAc;IACd,aAAa;IACb,UAAU;IACV,SAAS;IACT,2BAA2B;IAC3B,YAAY;IACZ,WAAW;IACX,SAAS;IACT,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,SAAS;IACT,SAAS;IACT,UAAU;IACV,SAAS;IACT,UAAU;IACV,sBAAsB;IACtB,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,UAAU;IACV,SAAS;IACT,aAAa;IACb,aAAa;IACb,eAAe;IACf,eAAe;IACf,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,SAAS;IACT,cAAc;IACd,iBAAiB;IACjB,SAAS;IACT,WAAW;IACX,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;IACf,aAAa;IACb,cAAc;IACd,mBAAmB;IACnB,iBAAiB;CAClB,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACtE,CAAC","sourcesContent":["/**\n * Free / public mailbox providers that should NOT be allowed as an\n * organization's auto-join domain.\n *\n * Why: the auto-join feature lets anyone who signs up with an email at the\n * org's `allowed_domain` join the org without an invitation. That is safe\n * for company-owned domains (`acme.com`) — the company controls who gets\n * an `@acme.com` address. It is catastrophic for shared mailbox providers\n * (`gmail.com`, `outlook.com`, etc.) — anyone in the world can create a\n * matching address and would be auto-added to the org.\n *\n * The list intentionally errs on the side of well-known providers; if a\n * future provider isn't here we'll learn from a bug report rather than\n * pretend we have an exhaustive registry.\n */\nexport const FREE_EMAIL_PROVIDER_DOMAINS: ReadonlySet<string> = new Set([\n // Google\n \"gmail.com\",\n \"googlemail.com\",\n // Microsoft\n \"outlook.com\",\n \"hotmail.com\",\n \"live.com\",\n \"msn.com\",\n \"outlook.co.uk\",\n \"hotmail.co.uk\",\n \"live.co.uk\",\n \"outlook.de\",\n \"hotmail.de\",\n \"live.de\",\n \"outlook.fr\",\n \"hotmail.fr\",\n \"live.fr\",\n // Yahoo\n \"yahoo.com\",\n \"yahoo.co.uk\",\n \"yahoo.co.jp\",\n \"yahoo.fr\",\n \"yahoo.de\",\n \"yahoo.it\",\n \"yahoo.es\",\n \"yahoo.ca\",\n \"yahoo.com.au\",\n \"yahoo.com.br\",\n \"ymail.com\",\n \"rocketmail.com\",\n // Apple\n \"icloud.com\",\n \"me.com\",\n \"mac.com\",\n // AOL / Verizon\n \"aol.com\",\n \"aim.com\",\n // Privacy / disposable / forwarding\n \"proton.me\",\n \"protonmail.com\",\n \"pm.me\",\n \"tutanota.com\",\n \"tutanota.de\",\n \"tuta.io\",\n \"fastmail.com\",\n \"fastmail.fm\",\n \"duck.com\",\n \"hey.com\",\n // Russian / Chinese majors\n \"yandex.com\",\n \"yandex.ru\",\n \"mail.ru\",\n \"list.ru\",\n \"bk.ru\",\n \"inbox.ru\",\n \"qq.com\",\n \"163.com\",\n \"126.com\",\n \"sina.com\",\n \"sina.cn\",\n \"sohu.com\",\n // ISP / legacy / misc\n \"gmx.com\",\n \"gmx.de\",\n \"gmx.net\",\n \"web.de\",\n \"t-online.de\",\n \"freenet.de\",\n \"zoho.com\",\n \"zohomail.com\",\n \"rediffmail.com\",\n \"mail.com\",\n \"att.net\",\n \"comcast.net\",\n \"verizon.net\",\n \"sbcglobal.net\",\n \"bellsouth.net\",\n \"cox.net\",\n \"earthlink.net\",\n \"btinternet.com\",\n \"btopenworld.com\",\n \"talktalk.net\",\n \"sky.com\",\n \"ntlworld.com\",\n \"virginmedia.com\",\n \"free.fr\",\n \"orange.fr\",\n \"wanadoo.fr\",\n \"laposte.net\",\n \"libero.it\",\n \"tiscali.it\",\n \"uol.com.br\",\n \"bol.com.br\",\n \"terra.com.br\",\n // Disposable\n \"mailinator.com\",\n \"guerrillamail.com\",\n \"10minutemail.com\",\n \"trashmail.com\",\n \"yopmail.com\",\n \"tempmail.com\",\n \"throwawaymail.com\",\n \"sharklasers.com\",\n]);\n\nexport function isFreeEmailProvider(domain: string): boolean {\n return FREE_EMAIL_PROVIDER_DOMAINS.has(domain.trim().toLowerCase());\n}\n"]}
|
package/dist/org/handlers.d.ts
CHANGED
|
@@ -37,13 +37,23 @@ export declare const listMembersHandler: import("h3").EventHandlerWithFetch<impo
|
|
|
37
37
|
joinedAt: number;
|
|
38
38
|
}[];
|
|
39
39
|
}>>;
|
|
40
|
-
|
|
41
|
-
export declare const createInvitationHandler: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
40
|
+
interface SingleInviteResult {
|
|
42
41
|
id: string;
|
|
43
|
-
email:
|
|
44
|
-
|
|
42
|
+
email: string;
|
|
43
|
+
role: "member" | "admin";
|
|
44
|
+
status: "pending";
|
|
45
45
|
emailSent: boolean;
|
|
46
|
-
emailError
|
|
46
|
+
emailError?: string;
|
|
47
|
+
}
|
|
48
|
+
interface SingleInviteFailure {
|
|
49
|
+
email: string;
|
|
50
|
+
error: string;
|
|
51
|
+
}
|
|
52
|
+
/** POST /_agent-native/org/invitations — invite one or many users by email */
|
|
53
|
+
export declare const createInvitationHandler: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<SingleInviteResult | {
|
|
54
|
+
succeeded: SingleInviteResult[];
|
|
55
|
+
failed: SingleInviteFailure[];
|
|
56
|
+
total: number;
|
|
47
57
|
}>>;
|
|
48
58
|
/** GET /_agent-native/org/invitations — list pending invitations for the org */
|
|
49
59
|
export declare const listInvitationsHandler: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
@@ -53,6 +63,7 @@ export declare const listInvitationsHandler: import("h3").EventHandlerWithFetch<
|
|
|
53
63
|
invitedBy: string;
|
|
54
64
|
createdAt: number;
|
|
55
65
|
status: string;
|
|
66
|
+
role: string;
|
|
56
67
|
}[];
|
|
57
68
|
}>>;
|
|
58
69
|
/** POST /_agent-native/org/invitations/:id/accept — accept an invitation */
|
|
@@ -65,6 +76,18 @@ export declare const acceptInvitationHandler: import("h3").EventHandlerWithFetch
|
|
|
65
76
|
export declare const removeMemberHandler: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
66
77
|
success: boolean;
|
|
67
78
|
}>>;
|
|
79
|
+
/**
|
|
80
|
+
* PUT /_agent-native/org/members/:email/role — change a member's role
|
|
81
|
+
* (owner/admin only). Body: { role: "admin" | "member" }.
|
|
82
|
+
*
|
|
83
|
+
* Only owners can promote/demote admins. (Admins can manage members but
|
|
84
|
+
* not other admins — otherwise an admin could escalate themselves to
|
|
85
|
+
* owner-equivalent control by promoting a confederate.)
|
|
86
|
+
*/
|
|
87
|
+
export declare const changeMemberRoleHandler: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
88
|
+
email: string;
|
|
89
|
+
role: string;
|
|
90
|
+
}>>;
|
|
68
91
|
/** PATCH /_agent-native/org — rename the current organization (owner/admin only) */
|
|
69
92
|
export declare const updateOrgHandler: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
70
93
|
orgId: string;
|
|
@@ -141,4 +164,5 @@ export declare const receiveA2ASecretHandler: import("h3").EventHandlerWithFetch
|
|
|
141
164
|
ok: boolean;
|
|
142
165
|
orgId: string;
|
|
143
166
|
}>>;
|
|
167
|
+
export {};
|
|
144
168
|
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/org/handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/org/handlers.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA2B1C,2FAA2F;AAC3F,eAAO,MAAM,eAAe;;;;;;;cAaA,OAAO;;;;;;;;;;eAIC,MAAM;iBAAW,MAAM;;;;GA0EzD,CAAC;AAEH,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB;;;;GAkC3B,CAAC;AAEH,wDAAwD;AACxD,eAAO,MAAM,kBAAkB;;;cAWH,OAAO;;;GAIjC,CAAC;AAMH,UAAU,kBAAkB;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAsED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB;;;;GAuEnC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,sBAAsB;;;;;;;;;GAyBlC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB;;;UAoD8B,OAAO;GAkBxE,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,mBAAmB;;GA2D/B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;GAqEnC,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,gBAAgB;;;GA4B3B,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB;;;UAkCC,OAAO;GAEnC,CAAC;AAEH,mGAAmG;AACnG,eAAO,MAAM,mBAAmB;;;UAqDR,OAAO;GAG9B,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,gBAAgB;;GAsE3B,CAAC;AAEH,oGAAoG;AACpG,eAAO,MAAM,mBAAmB;;;GA0C/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB;;;;;YA2DvB,MAAM;cACJ,MAAM;aACP,MAAM;YACP,OAAO;iBACF,MAAM;gBACP,MAAM;;GAyDnB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB;;;GAgGnC,CAAC"}
|