crewly 1.20.210 → 1.20.212
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/config/roles/orchestrator/prompt.md +1 -0
- package/config/skills/agent/core/app-data/SKILL.md +30 -1
- package/config/skills/agent/core/publish-app/SKILL.md +73 -6
- package/config/skills/agent/core/publish-app/execute.sh +125 -4
- package/config/skills/agent/core/publish-app/execute.test.sh +95 -4
- package/config/skills/agent/core/send-message/SKILL.md +9 -0
- package/config/skills/orchestrator/delegate-task/SKILL.md +9 -0
- package/config/skills/orchestrator/get-team-status/SKILL.md +9 -0
- package/config/skills/orchestrator/get-team-status/execute.sh +5 -1
- package/config/skills/orchestrator/send-message/SKILL.md +9 -0
- package/config/skills/orchestrator/start-agent/SKILL.md +9 -0
- package/config/skills/orchestrator/start-team/SKILL.md +9 -0
- package/config/skills/team-leader/assign-ticket/SKILL.md +9 -0
- package/config/skills/team-leader/delegate-task/SKILL.md +9 -0
- package/dist/backend/backend/src/constants.d.ts +78 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +78 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/apps/apps.controller.d.ts +17 -1
- package/dist/backend/backend/src/controllers/apps/apps.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/apps/apps.controller.js +45 -8
- package/dist/backend/backend/src/controllers/apps/apps.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/apps/apps.routes.d.ts +7 -0
- package/dist/backend/backend/src/controllers/apps/apps.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/apps/apps.routes.js +15 -1
- package/dist/backend/backend/src/controllers/apps/apps.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +12 -0
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +36 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/request-types.d.ts +10 -1
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +0 -36
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +41 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team-pause.controller.d.ts +59 -0
- package/dist/backend/backend/src/controllers/team/team-pause.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/team/team-pause.controller.js +161 -0
- package/dist/backend/backend/src/controllers/team/team-pause.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts +14 -0
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +78 -5
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.routes.js +7 -1
- package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +18 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/models/Team.d.ts +5 -1
- package/dist/backend/backend/src/models/Team.d.ts.map +1 -1
- package/dist/backend/backend/src/models/Team.js +8 -0
- package/dist/backend/backend/src/models/Team.js.map +1 -1
- package/dist/backend/backend/src/services/agent/owner-stopped.registry.d.ts +7 -2
- package/dist/backend/backend/src/services/agent/owner-stopped.registry.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/owner-stopped.registry.js +9 -3
- package/dist/backend/backend/src/services/agent/owner-stopped.registry.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +3 -2
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/backend/backend/src/services/apps/app-open-link.d.ts +61 -0
- package/dist/backend/backend/src/services/apps/app-open-link.d.ts.map +1 -0
- package/dist/backend/backend/src/services/apps/app-open-link.js +112 -0
- package/dist/backend/backend/src/services/apps/app-open-link.js.map +1 -0
- package/dist/backend/backend/src/services/apps/app-wake-message.d.ts +44 -3
- package/dist/backend/backend/src/services/apps/app-wake-message.d.ts.map +1 -1
- package/dist/backend/backend/src/services/apps/app-wake-message.js +99 -7
- package/dist/backend/backend/src/services/apps/app-wake-message.js.map +1 -1
- package/dist/backend/backend/src/services/apps/app-wake.service.d.ts +29 -2
- package/dist/backend/backend/src/services/apps/app-wake.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/apps/app-wake.service.js +151 -21
- package/dist/backend/backend/src/services/apps/app-wake.service.js.map +1 -1
- package/dist/backend/backend/src/services/apps/apps-registry.service.d.ts +18 -0
- package/dist/backend/backend/src/services/apps/apps-registry.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/apps/apps-registry.service.js +14 -0
- package/dist/backend/backend/src/services/apps/apps-registry.service.js.map +1 -1
- package/dist/backend/backend/src/services/apps/apps.service.d.ts +261 -12
- package/dist/backend/backend/src/services/apps/apps.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/apps/apps.service.js +387 -30
- package/dist/backend/backend/src/services/apps/apps.service.js.map +1 -1
- package/dist/backend/backend/src/services/apps/apps.wiring.d.ts +15 -1
- package/dist/backend/backend/src/services/apps/apps.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/apps/apps.wiring.js +27 -7
- package/dist/backend/backend/src/services/apps/apps.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +17 -5
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/logger.service.d.ts +5 -0
- package/dist/backend/backend/src/services/core/logger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/logger.service.js +8 -0
- package/dist/backend/backend/src/services/core/logger.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +6 -0
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js +6 -0
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +12 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +59 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js +12 -6
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +5 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +4 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +22 -0
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-channel-members.d.ts +27 -0
- package/dist/backend/backend/src/services/slack/slack-channel-members.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-channel-members.js +54 -0
- package/dist/backend/backend/src/services/slack/slack-channel-members.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-directory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-directory.service.js +7 -2
- package/dist/backend/backend/src/services/slack/slack-directory.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +3 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +19 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +48 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +155 -4
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.js +3 -1
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +11 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +36 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/untargeted-router.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/untargeted-router.js +14 -6
- package/dist/backend/backend/src/services/task-pool/untargeted-router.js.map +1 -1
- package/dist/backend/backend/src/services/team/team-pause-command.d.ts +97 -0
- package/dist/backend/backend/src/services/team/team-pause-command.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team/team-pause-command.js +177 -0
- package/dist/backend/backend/src/services/team/team-pause-command.js.map +1 -0
- package/dist/backend/backend/src/services/team/team-pause-notice.d.ts +43 -0
- package/dist/backend/backend/src/services/team/team-pause-notice.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team/team-pause-notice.js +61 -0
- package/dist/backend/backend/src/services/team/team-pause-notice.js.map +1 -0
- package/dist/backend/backend/src/services/team/team-pause.registry.d.ts +167 -0
- package/dist/backend/backend/src/services/team/team-pause.registry.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team/team-pause.registry.js +263 -0
- package/dist/backend/backend/src/services/team/team-pause.registry.js.map +1 -0
- package/dist/backend/backend/src/services/team/team-pause.service.d.ts +172 -0
- package/dist/backend/backend/src/services/team/team-pause.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team/team-pause.service.js +254 -0
- package/dist/backend/backend/src/services/team/team-pause.service.js.map +1 -0
- package/dist/backend/backend/src/services/team/team-pause.wiring.d.ts +30 -0
- package/dist/backend/backend/src/services/team/team-pause.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team/team-pause.wiring.js +48 -0
- package/dist/backend/backend/src/services/team/team-pause.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +11 -0
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +9 -0
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js +27 -2
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +7 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.js +14 -0
- package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +5 -0
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +6 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +22 -0
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +78 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +78 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/models/Team.d.ts +5 -1
- package/dist/cli/backend/src/models/Team.d.ts.map +1 -1
- package/dist/cli/backend/src/models/Team.js +8 -0
- package/dist/cli/backend/src/models/Team.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +3 -2
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/cli/backend/src/services/apps/app-open-link.d.ts +61 -0
- package/dist/cli/backend/src/services/apps/app-open-link.d.ts.map +1 -0
- package/dist/cli/backend/src/services/apps/app-open-link.js +112 -0
- package/dist/cli/backend/src/services/apps/app-open-link.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +17 -5
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/logger.service.d.ts +5 -0
- package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/logger.service.js +8 -0
- package/dist/cli/backend/src/services/core/logger.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +6 -0
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +22 -0
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-directory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-directory.service.js +7 -2
- package/dist/cli/backend/src/services/slack/slack-directory.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +19 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +48 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +155 -4
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.js +3 -1
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +11 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +36 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/team/team-pause-notice.d.ts +43 -0
- package/dist/cli/backend/src/services/team/team-pause-notice.d.ts.map +1 -0
- package/dist/cli/backend/src/services/team/team-pause-notice.js +61 -0
- package/dist/cli/backend/src/services/team/team-pause-notice.js.map +1 -0
- package/dist/cli/backend/src/services/team/team-pause.registry.d.ts +167 -0
- package/dist/cli/backend/src/services/team/team-pause.registry.d.ts.map +1 -0
- package/dist/cli/backend/src/services/team/team-pause.registry.js +263 -0
- package/dist/cli/backend/src/services/team/team-pause.registry.js.map +1 -0
- package/dist/cli/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/workflow/cron-task.service.js +14 -0
- package/dist/cli/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +22 -0
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/frontend/dist/assets/{index-f64b333a.js → index-917db1b8.js} +279 -279
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
import path from 'path';
|
|
11
11
|
import { CREWLY_APPS_CONSTANTS } from '../../constants.js';
|
|
12
12
|
import { AppsCloudError } from './apps-cloud.client.js';
|
|
13
|
+
import { toOpenLinkInfos, usableMintedLink } from './app-open-link.js';
|
|
14
|
+
import { sanitizeAppData } from './app-wake-message.js';
|
|
13
15
|
const C = CREWLY_APPS_CONSTANTS;
|
|
14
16
|
const APP_ID_RE = /^[a-km-np-z2-9]{10}$/;
|
|
15
17
|
const COLLECTION_RE = /^[A-Za-z0-9_-]{1,64}$/;
|
|
@@ -51,17 +53,155 @@ function requireData(data) {
|
|
|
51
53
|
function optString(v) {
|
|
52
54
|
return typeof v === 'string' && v.trim() ? v.trim() : undefined;
|
|
53
55
|
}
|
|
56
|
+
const errorText = (err) => (err instanceof Error ? err.message : String(err));
|
|
57
|
+
/**
|
|
58
|
+
* The app's plain URL (what agents see; opens the sign-in page without a session).
|
|
59
|
+
*
|
|
60
|
+
* @param appId - App id
|
|
61
|
+
* @returns URL
|
|
62
|
+
*/
|
|
63
|
+
export function plainAppUrl(appId) {
|
|
64
|
+
return `${C.APPS_ORIGIN}/${appId}`;
|
|
65
|
+
}
|
|
54
66
|
/**
|
|
55
67
|
* The "📱 <name> · Open app" card text. Markdown link: the reply path turns
|
|
56
|
-
* it into a Slack link.
|
|
68
|
+
* it into a Slack link. A pending public request adds one line asking the
|
|
69
|
+
* owner to approve or decline it in the app.
|
|
57
70
|
*
|
|
58
71
|
* @param name - App name
|
|
59
|
-
* @param
|
|
72
|
+
* @param url - The link (signed or plain)
|
|
73
|
+
* @param pending - The app's pending public request, if any
|
|
60
74
|
* @returns Card text
|
|
61
75
|
*/
|
|
62
|
-
export function appCardText(name,
|
|
76
|
+
export function appCardText(name, url, pending) {
|
|
63
77
|
const clean = name.replace(/[[\]()\r\n]/g, ' ').replace(/\s+/g, ' ').trim() || 'App';
|
|
64
|
-
|
|
78
|
+
const card = `📱 ${clean} · [Open app](${url})`;
|
|
79
|
+
if (!pending)
|
|
80
|
+
return card;
|
|
81
|
+
// Names are validated collection names (P2 regex), safe to print.
|
|
82
|
+
const safe = (xs) => xs.filter((x) => COLLECTION_RE.test(x)).join(', ');
|
|
83
|
+
const parts = [
|
|
84
|
+
pending.publicRead.length ? `read ${safe(pending.publicRead)}` : '',
|
|
85
|
+
pending.publicSubmit.length ? `submit to ${safe(pending.publicSubmit)}` : '',
|
|
86
|
+
].filter(Boolean);
|
|
87
|
+
return `${card}\n⚠️ Waiting for you: a request to make this app public (anyone with the link could ${parts.join('; ') || 'open it'}). Open the app to approve or decline it.`;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check a list of collection names for a public request.
|
|
91
|
+
*
|
|
92
|
+
* @param v - Candidate (array of names, or a comma-separated string)
|
|
93
|
+
* @param what - Field name for the message
|
|
94
|
+
* @returns Unique names
|
|
95
|
+
* @throws AppsCloudError validation
|
|
96
|
+
*/
|
|
97
|
+
export function requireCollectionList(v, what) {
|
|
98
|
+
if (v === undefined || v === null || v === '')
|
|
99
|
+
return [];
|
|
100
|
+
const raw = typeof v === 'string' ? v.split(',') : v;
|
|
101
|
+
if (!Array.isArray(raw))
|
|
102
|
+
throw validation(`${what} must be a list of collection names.`);
|
|
103
|
+
const names = [...new Set(raw.map((x) => (typeof x === 'string' ? x.trim() : x)).filter((x) => x !== ''))];
|
|
104
|
+
for (const n of names) {
|
|
105
|
+
if (typeof n !== 'string' || !COLLECTION_RE.test(n))
|
|
106
|
+
throw validation(`${what}: "${String(n).slice(0, 70)}" is not a collection name (1-64 of A-Z a-z 0-9 _ -).`);
|
|
107
|
+
}
|
|
108
|
+
if (names.length > C.PUBLIC_REQUEST.MAX_COLLECTIONS)
|
|
109
|
+
throw validation(`${what} can name at most ${C.PUBLIC_REQUEST.MAX_COLLECTIONS} collections.`);
|
|
110
|
+
return names;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check a public request body.
|
|
114
|
+
*
|
|
115
|
+
* @param input - `{ publicRead?, publicSubmit?, note? }`
|
|
116
|
+
* @returns The body Cloud gets
|
|
117
|
+
* @throws AppsCloudError validation
|
|
118
|
+
*/
|
|
119
|
+
export function validatePublicRequest(input) {
|
|
120
|
+
const o = input && typeof input === 'object' && !Array.isArray(input) ? input : null;
|
|
121
|
+
if (!o)
|
|
122
|
+
throw validation('publicRequest must be an object { publicRead?, publicSubmit?, note? }.');
|
|
123
|
+
const publicRead = requireCollectionList(o.publicRead, 'publicRead');
|
|
124
|
+
const publicSubmit = requireCollectionList(o.publicSubmit, 'publicSubmit');
|
|
125
|
+
if (publicRead.length === 0 && publicSubmit.length === 0) {
|
|
126
|
+
throw validation('A public request names at least one collection in publicRead or publicSubmit.');
|
|
127
|
+
}
|
|
128
|
+
if (o.note !== undefined && o.note !== null && typeof o.note !== 'string')
|
|
129
|
+
throw validation('note must be text.');
|
|
130
|
+
const note = optString(o.note);
|
|
131
|
+
if (note && note.length > C.PUBLIC_REQUEST.MAX_NOTE_CHARS)
|
|
132
|
+
throw validation(`note is at most ${C.PUBLIC_REQUEST.MAX_NOTE_CHARS} characters.`);
|
|
133
|
+
return { publicRead, publicSubmit, ...(note ? { note } : {}) };
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Check a link lifetime.
|
|
137
|
+
*
|
|
138
|
+
* @param v - Days (number or numeric string), or empty for Cloud's default
|
|
139
|
+
* @returns Days, or undefined
|
|
140
|
+
* @throws AppsCloudError validation
|
|
141
|
+
*/
|
|
142
|
+
export function requireTtlDays(v) {
|
|
143
|
+
if (v === undefined || v === null || v === '')
|
|
144
|
+
return undefined;
|
|
145
|
+
const n = typeof v === 'string' ? Number(v) : v;
|
|
146
|
+
if (typeof n !== 'number' || !Number.isInteger(n) || n < C.OPEN_LINK.MIN_TTL_DAYS || n > C.OPEN_LINK.MAX_TTL_DAYS) {
|
|
147
|
+
throw validation(`ttlDays is a whole number of days, ${C.OPEN_LINK.MIN_TTL_DAYS}-${C.OPEN_LINK.MAX_TTL_DAYS}.`);
|
|
148
|
+
}
|
|
149
|
+
return n;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Normalise Cloud's pending request (null when there is none).
|
|
153
|
+
*
|
|
154
|
+
* @param v - Cloud's `publicRequest`
|
|
155
|
+
* @returns The request or null
|
|
156
|
+
*/
|
|
157
|
+
function pendingOf(v) {
|
|
158
|
+
if (!v || typeof v !== 'object')
|
|
159
|
+
return null;
|
|
160
|
+
const r = v;
|
|
161
|
+
const list = (x) => (Array.isArray(x) ? x.filter((n) => typeof n === 'string') : []);
|
|
162
|
+
const str = (x) => (typeof x === 'string' ? x : null);
|
|
163
|
+
return { publicRead: list(r.publicRead), publicSubmit: list(r.publicSubmit), note: str(r.note), requestedBy: str(r.requestedBy), requestedAt: str(r.requestedAt) };
|
|
164
|
+
}
|
|
165
|
+
/** The message every public request answers with: only the owner can approve it. */
|
|
166
|
+
export const PUBLIC_REQUEST_MESSAGE = 'Requested: the owner approves it by opening the app. Until then the app stays private; no agent can make it public.';
|
|
167
|
+
/**
|
|
168
|
+
* Said when publishing or rolling back a public app took it private again
|
|
169
|
+
* (crewly-services #33: every new current version of a public app needs the
|
|
170
|
+
* owner's re-approval).
|
|
171
|
+
*/
|
|
172
|
+
export const PUBLIC_PAUSED_MESSAGE = 'This app was public. Publishing or rolling back a public app makes it private again until the owner re-approves it in the app (they sign in with Google there to approve). Tell the owner; do not say it is public.';
|
|
173
|
+
/** One blocked word: its display form and the pattern that finds it. */
|
|
174
|
+
const BLOCKED_NAME_PATTERNS = C.PUBLIC_REQUEST.BLOCKED_NAME_WORDS.map((word) => {
|
|
175
|
+
const parts = word.split(/[\s-]+/);
|
|
176
|
+
if (parts.length === 1)
|
|
177
|
+
return { word, re: new RegExp(word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i') };
|
|
178
|
+
// "sign in" / "sign-in" / "log in": whole words, any of space, hyphen, underscore or nothing between.
|
|
179
|
+
return { word, re: new RegExp(`\\b${parts.join('[\\s_-]*')}\\b`, 'i') };
|
|
180
|
+
});
|
|
181
|
+
/**
|
|
182
|
+
* The first word Cloud refuses in a public app's name, if any
|
|
183
|
+
* (crewly-services #33; {@link CREWLY_APPS_CONSTANTS.PUBLIC_REQUEST}.BLOCKED_NAME_WORDS).
|
|
184
|
+
*
|
|
185
|
+
* @param name - App name
|
|
186
|
+
* @returns The blocked word found, or null
|
|
187
|
+
*/
|
|
188
|
+
export function blockedPublicNameWord(name) {
|
|
189
|
+
for (const { word, re } of BLOCKED_NAME_PATTERNS)
|
|
190
|
+
if (re.test(name))
|
|
191
|
+
return word;
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Refuse a public request for an app whose name Cloud would refuse at approval.
|
|
196
|
+
*
|
|
197
|
+
* @param name - App name
|
|
198
|
+
* @throws AppsCloudError validation naming the word
|
|
199
|
+
*/
|
|
200
|
+
export function assertPublicName(name) {
|
|
201
|
+
const word = blockedPublicNameWord(name);
|
|
202
|
+
if (word) {
|
|
203
|
+
throw validation(`A public app's name may not contain "${word}" (nor any of: ${C.PUBLIC_REQUEST.BLOCKED_NAME_WORDS.join(', ')}); the owner could not approve it. Rename the app (--name) and ask again.`);
|
|
204
|
+
}
|
|
65
205
|
}
|
|
66
206
|
/**
|
|
67
207
|
* Publishing and data access for Crewly Apps.
|
|
@@ -88,6 +228,9 @@ export class AppsService {
|
|
|
88
228
|
const agentSession = caller.agentSession ?? null;
|
|
89
229
|
if (name && name.length > 80)
|
|
90
230
|
throw validation('name is at most 80 characters.');
|
|
231
|
+
const publicBody = input.publicRequest === undefined || input.publicRequest === null ? null : validatePublicRequest(input.publicRequest);
|
|
232
|
+
if (publicBody && name)
|
|
233
|
+
assertPublicName(name);
|
|
91
234
|
const { registry, client } = this.deps;
|
|
92
235
|
let entry = await registry.find({ appId: explicitId, agentSession, source, name });
|
|
93
236
|
// An agent publishes only to its own apps; adopting an app made elsewhere is the owner's call.
|
|
@@ -121,9 +264,15 @@ export class AppsService {
|
|
|
121
264
|
}
|
|
122
265
|
else {
|
|
123
266
|
const newName = name ?? (source ? path.basename(source).replace(/\.[^.]+$/, '') : '');
|
|
267
|
+
// Checked before the app is created, so a refused name leaves nothing behind.
|
|
268
|
+
if (publicBody)
|
|
269
|
+
assertPublicName(newName.slice(0, 80) || 'App');
|
|
124
270
|
app = await client.request('POST', '/apps', { body: { name: newName.slice(0, 80) || 'App' }, agent: caller.agentSession });
|
|
125
271
|
created = true;
|
|
126
272
|
}
|
|
273
|
+
if (publicBody)
|
|
274
|
+
assertPublicName(app.name);
|
|
275
|
+
const wasPublic = app.visibility === 'public';
|
|
127
276
|
const entryFile = optString(input.entry);
|
|
128
277
|
const note = optString(input.note);
|
|
129
278
|
const version = await client.request('POST', `/apps/${app.appId}/versions`, {
|
|
@@ -146,35 +295,220 @@ export class AppsService {
|
|
|
146
295
|
...(created ? { cursor: 0 } : {}),
|
|
147
296
|
deleted: false,
|
|
148
297
|
});
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
298
|
+
// crewly-services #33: a new version of a public app takes it private
|
|
299
|
+
// with a pending re-approval. Re-read the app (one GET, only when it was public).
|
|
300
|
+
let publicPaused = false;
|
|
301
|
+
if (wasPublic) {
|
|
302
|
+
const after = await client.request('GET', `/apps/${app.appId}`, { agent: caller.agentSession }).catch(() => null);
|
|
303
|
+
if (after) {
|
|
304
|
+
publicPaused = after.visibility === 'private' && !!pendingOf(after.publicRequest);
|
|
305
|
+
app = { ...app, visibility: after.visibility, publicRequest: after.publicRequest };
|
|
154
306
|
}
|
|
155
|
-
|
|
156
|
-
|
|
307
|
+
}
|
|
308
|
+
// P3: ask the owner to make it public. The version is already up, so a
|
|
309
|
+
// failure here is reported, not thrown.
|
|
310
|
+
let pending = pendingOf(app.publicRequest);
|
|
311
|
+
let publicRequested;
|
|
312
|
+
let publicError;
|
|
313
|
+
if (publicBody) {
|
|
314
|
+
try {
|
|
315
|
+
const v = await client.request('POST', `/apps/${app.appId}/visibility-request`, {
|
|
316
|
+
body: publicBody,
|
|
317
|
+
agent: caller.agentSession,
|
|
318
|
+
});
|
|
319
|
+
pending = pendingOf(v?.publicRequest) ?? { ...publicBody, note: publicBody.note ?? null, requestedBy: caller.agentSession ?? null, requestedAt: null };
|
|
320
|
+
publicRequested = true;
|
|
157
321
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
error: err instanceof Error ? err.message : String(err),
|
|
162
|
-
}));
|
|
163
|
-
notified = r.ok;
|
|
164
|
-
if (!r.ok)
|
|
165
|
-
notifyError = r.error ?? 'The card could not be delivered.';
|
|
322
|
+
catch (err) {
|
|
323
|
+
publicRequested = false;
|
|
324
|
+
publicError = errorText(err);
|
|
166
325
|
}
|
|
167
326
|
}
|
|
327
|
+
// An agent's public request always tells the owner, so the card goes out with it.
|
|
328
|
+
const card = input.notify === true || (publicRequested === true && !!caller.agentSession)
|
|
329
|
+
? await this.sendCard({ appId: app.appId, name: app.name, pending }, caller, entry.agentSession ?? null)
|
|
330
|
+
: { notified: false };
|
|
168
331
|
return {
|
|
169
332
|
appId: app.appId,
|
|
170
333
|
name: app.name,
|
|
171
|
-
url:
|
|
334
|
+
url: plainAppUrl(app.appId),
|
|
172
335
|
version: version.version,
|
|
173
336
|
created,
|
|
174
|
-
|
|
175
|
-
...(
|
|
337
|
+
...card,
|
|
338
|
+
...(publicRequested !== undefined ? { publicRequested } : {}),
|
|
339
|
+
...(publicError ? { publicError } : {}),
|
|
340
|
+
...(publicPaused ? { publicPaused: true, publicPausedMessage: PUBLIC_PAUSED_MESSAGE } : {}),
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Post the "Open app" card for the owner.
|
|
345
|
+
*
|
|
346
|
+
* Destination rule (P3 §1): when the agent has a DM with the owner, a
|
|
347
|
+
* fresh signed link is minted and the card goes to that DM only — never
|
|
348
|
+
* to a room, a team channel or a shared room, wherever the conversation
|
|
349
|
+
* happens to be. Without a DM, or when minting or the DM post fails, the
|
|
350
|
+
* card carries the plain URL and goes where the agent talks with the owner
|
|
351
|
+
* (P2). The signed URL is never returned.
|
|
352
|
+
*
|
|
353
|
+
* @param app - App id, name and its pending public request
|
|
354
|
+
* @param caller - Agent or owner
|
|
355
|
+
* @param publisher - The app's recorded agent (posts the card for an owner call)
|
|
356
|
+
* @param ttlDays - Link lifetime (Cloud's default when omitted)
|
|
357
|
+
* @returns What was posted, without the URL
|
|
358
|
+
*/
|
|
359
|
+
async sendCard(app, caller, publisher, ttlDays) {
|
|
360
|
+
const poster = caller.agentSession ?? publisher;
|
|
361
|
+
if (!poster)
|
|
362
|
+
return { notified: false, notifyError: 'Only an agent can post the app card (it goes out under the agent’s identity), and this app has no recorded agent.' };
|
|
363
|
+
const cards = this.deps.cards;
|
|
364
|
+
if (!cards)
|
|
365
|
+
return { notified: false, notifyError: 'Posting the app card is not available on this instance.' };
|
|
366
|
+
let linkError;
|
|
367
|
+
const dm = await cards.ownerDm(poster).catch(() => null);
|
|
368
|
+
if (dm) {
|
|
369
|
+
let link = null;
|
|
370
|
+
try {
|
|
371
|
+
link = usableMintedLink(app.appId, await this.deps.client.request('POST', `/apps/${app.appId}/open-links`, { body: ttlDays ? { ttlDays } : {}, agent: caller.agentSession }));
|
|
372
|
+
if (!link)
|
|
373
|
+
linkError = 'Crewly Cloud did not return a usable open-link; the card has the plain URL (the owner may have to sign in).';
|
|
374
|
+
}
|
|
375
|
+
catch (err) {
|
|
376
|
+
linkError = `Could not mint a signed link (${errorText(err)}); the card has the plain URL (the owner may have to sign in).`;
|
|
377
|
+
}
|
|
378
|
+
if (link) {
|
|
379
|
+
const r = await cards.postToOwnerDm(poster, dm, appCardText(app.name, link.url, app.pending)).catch((err) => ({ ok: false, error: errorText(err) }));
|
|
380
|
+
if (r.ok) {
|
|
381
|
+
return { notified: true, card: 'signed', cardPlace: 'owner-dm', linkId: link.linkId, ...(link.expiresAt ? { linkExpiresAt: link.expiresAt } : {}) };
|
|
382
|
+
}
|
|
383
|
+
// Never leave a live link nobody received.
|
|
384
|
+
await this.deps.client.request('DELETE', `/apps/${app.appId}/open-links/${link.linkId}`, { agent: caller.agentSession }).catch(() => undefined);
|
|
385
|
+
linkError = `The signed card could not be posted to the DM with the owner (${r.error ?? 'not delivered'}); sent the plain URL instead.`;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
linkError = 'No DM with the owner to put a signed link in; the card has the plain URL (the owner may have to sign in).';
|
|
390
|
+
}
|
|
391
|
+
const r = await cards.postReply(poster, appCardText(app.name, plainAppUrl(app.appId), app.pending)).catch((err) => ({ ok: false, error: errorText(err) }));
|
|
392
|
+
return {
|
|
393
|
+
notified: r.ok,
|
|
394
|
+
...(r.ok ? { card: 'plain', cardPlace: 'conversation' } : { notifyError: r.error ?? 'The card could not be delivered.' }),
|
|
395
|
+
...(linkError ? { linkError } : {}),
|
|
176
396
|
};
|
|
177
397
|
}
|
|
398
|
+
/**
|
|
399
|
+
* Post the card again with a fresh signed link, without publishing (P3 §1, re-share).
|
|
400
|
+
*
|
|
401
|
+
* @param appId - App id
|
|
402
|
+
* @param opts - `ttlDays` (1-30, Cloud's default 7)
|
|
403
|
+
* @param caller - Agent (its own apps) or owner (any; posts as the recorded agent)
|
|
404
|
+
* @returns What was posted; never the signed URL
|
|
405
|
+
*/
|
|
406
|
+
async share(appId, opts, caller) {
|
|
407
|
+
const id = requireAppId(appId);
|
|
408
|
+
const ttlDays = requireTtlDays(opts.ttlDays);
|
|
409
|
+
await this.assertPublisher(id, caller);
|
|
410
|
+
const app = await this.deps.client.request('GET', `/apps/${id}`, { agent: caller.agentSession });
|
|
411
|
+
const pending = pendingOf(app.publicRequest);
|
|
412
|
+
const entry = await this.deps.registry.get(id);
|
|
413
|
+
const card = await this.sendCard({ appId: id, name: app.name, pending }, caller, entry?.agentSession ?? null, ttlDays);
|
|
414
|
+
return { appId: id, name: app.name, url: plainAppUrl(id), visibility: app.visibility ?? 'private', publicRequestPending: !!pending, ...card };
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* The app's open-links (no tokens).
|
|
418
|
+
*
|
|
419
|
+
* @param appId - App id
|
|
420
|
+
* @param caller - Agent (its own apps) or owner
|
|
421
|
+
* @returns Links, newest as Cloud orders them
|
|
422
|
+
*/
|
|
423
|
+
async links(appId, caller) {
|
|
424
|
+
const id = requireAppId(appId);
|
|
425
|
+
await this.assertPublisher(id, caller);
|
|
426
|
+
return toOpenLinkInfos(await this.deps.client.request('GET', `/apps/${id}/open-links`, { agent: caller.agentSession }));
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Revoke one open-link.
|
|
430
|
+
*
|
|
431
|
+
* @param appId - App id
|
|
432
|
+
* @param linkId - Link id
|
|
433
|
+
* @param caller - Agent (its own apps) or owner
|
|
434
|
+
* @returns `{ revoked: true }`; 404 not_found for an unknown link
|
|
435
|
+
*/
|
|
436
|
+
async revokeLink(appId, linkId, caller) {
|
|
437
|
+
const id = requireAppId(appId);
|
|
438
|
+
if (typeof linkId !== 'string' || !C.OPEN_LINK.LINK_ID_PATTERN.test(linkId))
|
|
439
|
+
throw validation('linkId must be 1-64 of A-Z a-z 0-9 _ -.');
|
|
440
|
+
await this.assertPublisher(id, caller);
|
|
441
|
+
const r = await this.deps.client.request('DELETE', `/apps/${id}/open-links/${linkId}`, { agent: caller.agentSession });
|
|
442
|
+
return { revoked: r?.revoked === true };
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Revoke every open-link of an app.
|
|
446
|
+
*
|
|
447
|
+
* @param appId - App id
|
|
448
|
+
* @param caller - Agent (its own apps) or owner
|
|
449
|
+
* @returns `{ revoked: <count> }`
|
|
450
|
+
*/
|
|
451
|
+
async revokeLinks(appId, caller) {
|
|
452
|
+
const id = requireAppId(appId);
|
|
453
|
+
await this.assertPublisher(id, caller);
|
|
454
|
+
const r = await this.deps.client.request('DELETE', `/apps/${id}/open-links`, { agent: caller.agentSession });
|
|
455
|
+
return { revoked: typeof r?.revoked === 'number' ? r.revoked : 0 };
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Ask the owner to make an app public (P3 §2). Only records the request:
|
|
459
|
+
* Cloud flips visibility only from the owner's own session in the apps
|
|
460
|
+
* shell, so nothing here can make an app public. An agent's request also
|
|
461
|
+
* posts the card, which tells the owner to approve or decline it.
|
|
462
|
+
*
|
|
463
|
+
* @param appId - App id
|
|
464
|
+
* @param input - Collections to open for reading / anonymous submissions, and a note
|
|
465
|
+
* @param caller - Agent (its own apps) or owner
|
|
466
|
+
* @returns The recorded request and the card result
|
|
467
|
+
*/
|
|
468
|
+
async requestPublic(appId, input, caller) {
|
|
469
|
+
const id = requireAppId(appId);
|
|
470
|
+
const body = validatePublicRequest(input);
|
|
471
|
+
await this.assertPublisher(id, caller);
|
|
472
|
+
const current = await this.deps.client.request('GET', `/apps/${id}`, { agent: caller.agentSession });
|
|
473
|
+
assertPublicName(current.name);
|
|
474
|
+
const v = await this.deps.client.request('POST', `/apps/${id}/visibility-request`, {
|
|
475
|
+
body,
|
|
476
|
+
agent: caller.agentSession,
|
|
477
|
+
});
|
|
478
|
+
const pending = pendingOf(v?.publicRequest);
|
|
479
|
+
let card = { notified: false };
|
|
480
|
+
if (caller.agentSession) {
|
|
481
|
+
const entry = await this.deps.registry.get(id);
|
|
482
|
+
card = await this.sendCard({ appId: id, name: current.name || entry?.name || 'App', pending: pending ?? { ...body, note: body.note ?? null, requestedBy: caller.agentSession, requestedAt: null } }, caller, entry?.agentSession ?? null);
|
|
483
|
+
}
|
|
484
|
+
return { appId: id, url: plainAppUrl(id), visibility: v?.visibility ?? 'private', publicRequest: pending, message: PUBLIC_REQUEST_MESSAGE, ...card };
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Withdraw a pending public request.
|
|
488
|
+
*
|
|
489
|
+
* @param appId - App id
|
|
490
|
+
* @param caller - Agent (its own apps) or owner
|
|
491
|
+
* @returns Cloud's answer
|
|
492
|
+
*/
|
|
493
|
+
async cancelPublicRequest(appId, caller) {
|
|
494
|
+
const id = requireAppId(appId);
|
|
495
|
+
await this.assertPublisher(id, caller);
|
|
496
|
+
const r = await this.deps.client.request('DELETE', `/apps/${id}/visibility-request`, { agent: caller.agentSession });
|
|
497
|
+
return { appId: id, cancelled: true, visibility: r?.visibility ?? 'private' };
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Make an app private again (instant; always allowed).
|
|
501
|
+
*
|
|
502
|
+
* @param appId - App id
|
|
503
|
+
* @param caller - Agent (its own apps) or owner
|
|
504
|
+
* @returns `{ visibility: 'private' }`
|
|
505
|
+
*/
|
|
506
|
+
async makePrivate(appId, caller) {
|
|
507
|
+
const id = requireAppId(appId);
|
|
508
|
+
await this.assertPublisher(id, caller);
|
|
509
|
+
const r = await this.deps.client.request('POST', `/apps/${id}/make-private`, { agent: caller.agentSession });
|
|
510
|
+
return { appId: id, visibility: r?.visibility ?? 'private' };
|
|
511
|
+
}
|
|
178
512
|
/**
|
|
179
513
|
* Make an earlier retained version current.
|
|
180
514
|
*
|
|
@@ -189,10 +523,17 @@ export class AppsService {
|
|
|
189
523
|
if (typeof v !== 'number' || !Number.isInteger(v) || v < 1)
|
|
190
524
|
throw validation('version must be a positive integer.');
|
|
191
525
|
await this.assertPublisher(id, caller);
|
|
526
|
+
// Was it public? A rollback of a public app takes it private (crewly-services #33).
|
|
527
|
+
const before = await this.deps.client.request('GET', `/apps/${id}`, { agent: caller.agentSession }).catch(() => null);
|
|
192
528
|
const app = await this.deps.client.request('POST', `/apps/${id}/rollback`, { body: { version: v }, agent: caller.agentSession });
|
|
193
529
|
if (await this.deps.registry.get(id))
|
|
194
530
|
await this.deps.registry.upsert(id, { currentVersion: app.currentVersion });
|
|
195
|
-
|
|
531
|
+
let after = app;
|
|
532
|
+
if (before?.visibility === 'public' && app.visibility === undefined) {
|
|
533
|
+
after = await this.deps.client.request('GET', `/apps/${id}`, { agent: caller.agentSession }).catch(() => null);
|
|
534
|
+
}
|
|
535
|
+
const paused = before?.visibility === 'public' && after?.visibility === 'private' && !!pendingOf(after.publicRequest);
|
|
536
|
+
return paused ? { ...app, publicPaused: true, publicPausedMessage: PUBLIC_PAUSED_MESSAGE } : app;
|
|
196
537
|
}
|
|
197
538
|
/**
|
|
198
539
|
* Versions of an app, newest first.
|
|
@@ -251,7 +592,7 @@ export class AppsService {
|
|
|
251
592
|
async list(caller = {}) {
|
|
252
593
|
return (await this.deps.registry.list())
|
|
253
594
|
.filter((e) => !caller.agentSession || e.agentSession === caller.agentSession)
|
|
254
|
-
.map(({ cursor: _cursor, delivered: _delivered, wakes: _wakes, ...rest }) => rest);
|
|
595
|
+
.map(({ cursor: _cursor, delivered: _delivered, wakes: _wakes, visitorWakes: _visitorWakes, ...rest }) => rest);
|
|
255
596
|
}
|
|
256
597
|
/**
|
|
257
598
|
* One page of a collection.
|
|
@@ -269,7 +610,7 @@ export class AppsService {
|
|
|
269
610
|
const after = opts.after !== undefined && opts.after !== '' ? requireDocId(opts.after) : undefined;
|
|
270
611
|
const path = `/apps/${requireAppId(appId)}/data/${requireCollection(collection)}`;
|
|
271
612
|
await this.assertDataAccess(appId, caller);
|
|
272
|
-
return this.
|
|
613
|
+
return this.dataRequest('GET', path, {
|
|
273
614
|
query: { limit, after },
|
|
274
615
|
agent: caller.agentSession,
|
|
275
616
|
});
|
|
@@ -286,7 +627,7 @@ export class AppsService {
|
|
|
286
627
|
async getDoc(appId, collection, docId, caller) {
|
|
287
628
|
const path = this.docPath(appId, collection, docId);
|
|
288
629
|
await this.assertDataAccess(appId, caller);
|
|
289
|
-
return this.
|
|
630
|
+
return this.dataRequest('GET', path, { agent: caller.agentSession });
|
|
290
631
|
}
|
|
291
632
|
/**
|
|
292
633
|
* Replace (or create) a document.
|
|
@@ -302,7 +643,7 @@ export class AppsService {
|
|
|
302
643
|
const path = this.docPath(appId, collection, docId);
|
|
303
644
|
const body = { data: requireData(data) };
|
|
304
645
|
await this.assertDataAccess(appId, caller);
|
|
305
|
-
return this.
|
|
646
|
+
return this.dataRequest('PUT', path, { body, agent: caller.agentSession });
|
|
306
647
|
}
|
|
307
648
|
/**
|
|
308
649
|
* Shallow-merge into a document; `ifRev` makes it conditional (409 conflict).
|
|
@@ -322,7 +663,7 @@ export class AppsService {
|
|
|
322
663
|
const path = this.docPath(appId, collection, docId);
|
|
323
664
|
const body = { data: requireData(data), ...(rev !== undefined ? { ifRev: rev } : {}) };
|
|
324
665
|
await this.assertDataAccess(appId, caller);
|
|
325
|
-
return this.
|
|
666
|
+
return this.dataRequest('PATCH', path, {
|
|
326
667
|
body,
|
|
327
668
|
agent: caller.agentSession,
|
|
328
669
|
});
|
|
@@ -340,7 +681,7 @@ export class AppsService {
|
|
|
340
681
|
const path = `/apps/${requireAppId(appId)}/data/${requireCollection(collection)}`;
|
|
341
682
|
const body = { data: requireData(data) };
|
|
342
683
|
await this.assertDataAccess(appId, caller);
|
|
343
|
-
return this.
|
|
684
|
+
return this.dataRequest('POST', path, {
|
|
344
685
|
body,
|
|
345
686
|
agent: caller.agentSession,
|
|
346
687
|
});
|
|
@@ -357,7 +698,23 @@ export class AppsService {
|
|
|
357
698
|
async deleteDoc(appId, collection, docId, caller) {
|
|
358
699
|
const path = this.docPath(appId, collection, docId);
|
|
359
700
|
await this.assertDataAccess(appId, caller);
|
|
360
|
-
return this.
|
|
701
|
+
return this.dataRequest('DELETE', path, { agent: caller.agentSession });
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* A Cloud data call whose answer is sanitised before it leaves the backend
|
|
705
|
+
* (P3 §4): documents were written by the owner, other agents or anonymous
|
|
706
|
+
* visitors, and an agent prints them into its terminal, where harness
|
|
707
|
+
* markers (`[CHAT_RESPONSE]`, `[DONE]`, fenced blocks), ANSI escapes or
|
|
708
|
+
* bidi characters would act. Every string value and key is cleaned; the
|
|
709
|
+
* structure is kept. Done here, not in the skill, so no caller bypasses it.
|
|
710
|
+
*
|
|
711
|
+
* @param method - HTTP method
|
|
712
|
+
* @param path - Cloud path
|
|
713
|
+
* @param opts - Request options
|
|
714
|
+
* @returns The display-safe answer
|
|
715
|
+
*/
|
|
716
|
+
async dataRequest(method, path, opts) {
|
|
717
|
+
return sanitizeAppData(await this.deps.client.request(method, path, opts));
|
|
361
718
|
}
|
|
362
719
|
docPath(appId, collection, docId) {
|
|
363
720
|
return `/apps/${requireAppId(appId)}/data/${requireCollection(collection)}/${encodeURIComponent(requireDocId(docId))}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/apps/apps.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apps.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/apps/apps.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { AppsCloudClient } from './apps-cloud.client.js';
|
|
9
9
|
import { AppsRegistryService } from './apps-registry.service.js';
|
|
10
|
-
import { AppsService } from './apps.service.js';
|
|
10
|
+
import { AppsService, type AppCardPoster } from './apps.service.js';
|
|
11
11
|
import { AppWakeService } from './app-wake.service.js';
|
|
12
12
|
/** The team shape the apps code reads. */
|
|
13
13
|
export interface AppsTeam {
|
|
@@ -44,6 +44,20 @@ export declare function sameTeamFrom(teams: AppsTeamsSource): (a: string, b: str
|
|
|
44
44
|
* @returns Resolver
|
|
45
45
|
*/
|
|
46
46
|
export declare function teamAgentResolver(teams: AppsTeamsSource): (name: string, publisher: string) => Promise<string | null>;
|
|
47
|
+
/**
|
|
48
|
+
* The real card poster (specs/2026-10-04-crewly-apps-p3.md §1).
|
|
49
|
+
*
|
|
50
|
+
* - `ownerDm`: the agent's DM with the owner — the same lookup `reply` uses
|
|
51
|
+
* for its last step (Slack DM link, else the dashboard DM of a real team
|
|
52
|
+
* member). Cloud forwards only the owner's Slack DMs to an agent bot, so a
|
|
53
|
+
* linked Slack DM is one-to-one with the owner.
|
|
54
|
+
* - `postToOwnerDm`: straight into that conversation, with no resolver and
|
|
55
|
+
* no fallback, so a signed link can never be re-routed into a room. Not
|
|
56
|
+
* traced either: the run trace records reply text, and this text holds
|
|
57
|
+
* the token.
|
|
58
|
+
* - `postReply`: the P2 path (`deliverReply`), for the plain-URL card.
|
|
59
|
+
*/
|
|
60
|
+
export declare const defaultCardPoster: AppCardPoster;
|
|
47
61
|
/**
|
|
48
62
|
* The shared Apps parts, built on first use.
|
|
49
63
|
*
|