crewly 1.20.303 → 1.20.305

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.
Files changed (139) hide show
  1. package/config/skills/orchestrator/move-team/SKILL.md +53 -0
  2. package/config/skills/orchestrator/move-team/execute.sh +42 -0
  3. package/dist/backend/backend/src/constants.d.ts +82 -0
  4. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  5. package/dist/backend/backend/src/constants.js +82 -0
  6. package/dist/backend/backend/src/constants.js.map +1 -1
  7. package/dist/backend/backend/src/controllers/team-move/team-move.controller.d.ts +39 -0
  8. package/dist/backend/backend/src/controllers/team-move/team-move.controller.d.ts.map +1 -0
  9. package/dist/backend/backend/src/controllers/team-move/team-move.controller.js +211 -0
  10. package/dist/backend/backend/src/controllers/team-move/team-move.controller.js.map +1 -0
  11. package/dist/backend/backend/src/index.d.ts.map +1 -1
  12. package/dist/backend/backend/src/index.js +22 -3
  13. package/dist/backend/backend/src/index.js.map +1 -1
  14. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  15. package/dist/backend/backend/src/routes/api.routes.js +3 -0
  16. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  17. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
  18. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  19. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +1 -0
  20. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  21. package/dist/backend/backend/src/services/core/storage.service.d.ts +18 -0
  22. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  23. package/dist/backend/backend/src/services/core/storage.service.js +16 -0
  24. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  25. package/dist/backend/backend/src/services/decisions/decision.service.d.ts +19 -0
  26. package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  27. package/dist/backend/backend/src/services/decisions/decision.service.js +46 -0
  28. package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
  29. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  30. package/dist/backend/backend/src/services/slack/slack-initializer.js +2 -1
  31. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  32. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +9 -0
  33. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  34. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +25 -0
  35. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  36. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
  37. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +41 -0
  39. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  40. package/dist/backend/backend/src/services/team-move/team-move-archive.d.ts +122 -0
  41. package/dist/backend/backend/src/services/team-move/team-move-archive.d.ts.map +1 -0
  42. package/dist/backend/backend/src/services/team-move/team-move-archive.js +202 -0
  43. package/dist/backend/backend/src/services/team-move/team-move-archive.js.map +1 -0
  44. package/dist/backend/backend/src/services/team-move/team-move-chat.d.ts +59 -0
  45. package/dist/backend/backend/src/services/team-move/team-move-chat.d.ts.map +1 -0
  46. package/dist/backend/backend/src/services/team-move/team-move-chat.js +133 -0
  47. package/dist/backend/backend/src/services/team-move/team-move-chat.js.map +1 -0
  48. package/dist/backend/backend/src/services/team-move/team-move-cloud.client.d.ts +102 -0
  49. package/dist/backend/backend/src/services/team-move/team-move-cloud.client.d.ts.map +1 -0
  50. package/dist/backend/backend/src/services/team-move/team-move-cloud.client.js +217 -0
  51. package/dist/backend/backend/src/services/team-move/team-move-cloud.client.js.map +1 -0
  52. package/dist/backend/backend/src/services/team-move/team-move-crypto.d.ts +102 -0
  53. package/dist/backend/backend/src/services/team-move/team-move-crypto.d.ts.map +1 -0
  54. package/dist/backend/backend/src/services/team-move/team-move-crypto.js +348 -0
  55. package/dist/backend/backend/src/services/team-move/team-move-crypto.js.map +1 -0
  56. package/dist/backend/backend/src/services/team-move/team-move-driver.service.d.ts +209 -0
  57. package/dist/backend/backend/src/services/team-move/team-move-driver.service.d.ts.map +1 -0
  58. package/dist/backend/backend/src/services/team-move/team-move-driver.service.js +504 -0
  59. package/dist/backend/backend/src/services/team-move/team-move-driver.service.js.map +1 -0
  60. package/dist/backend/backend/src/services/team-move/team-move-exporter.d.ts +182 -0
  61. package/dist/backend/backend/src/services/team-move/team-move-exporter.d.ts.map +1 -0
  62. package/dist/backend/backend/src/services/team-move/team-move-exporter.js +537 -0
  63. package/dist/backend/backend/src/services/team-move/team-move-exporter.js.map +1 -0
  64. package/dist/backend/backend/src/services/team-move/team-move-fs.d.ts +157 -0
  65. package/dist/backend/backend/src/services/team-move/team-move-fs.d.ts.map +1 -0
  66. package/dist/backend/backend/src/services/team-move/team-move-fs.js +298 -0
  67. package/dist/backend/backend/src/services/team-move/team-move-fs.js.map +1 -0
  68. package/dist/backend/backend/src/services/team-move/team-move-git.d.ts +69 -0
  69. package/dist/backend/backend/src/services/team-move/team-move-git.d.ts.map +1 -0
  70. package/dist/backend/backend/src/services/team-move/team-move-git.js +198 -0
  71. package/dist/backend/backend/src/services/team-move/team-move-git.js.map +1 -0
  72. package/dist/backend/backend/src/services/team-move/team-move-importer.d.ts +121 -0
  73. package/dist/backend/backend/src/services/team-move/team-move-importer.d.ts.map +1 -0
  74. package/dist/backend/backend/src/services/team-move/team-move-importer.js +473 -0
  75. package/dist/backend/backend/src/services/team-move/team-move-importer.js.map +1 -0
  76. package/dist/backend/backend/src/services/team-move/team-move-journal.d.ts +110 -0
  77. package/dist/backend/backend/src/services/team-move/team-move-journal.d.ts.map +1 -0
  78. package/dist/backend/backend/src/services/team-move/team-move-journal.js +198 -0
  79. package/dist/backend/backend/src/services/team-move/team-move-journal.js.map +1 -0
  80. package/dist/backend/backend/src/services/team-move/team-move-machines.d.ts +62 -0
  81. package/dist/backend/backend/src/services/team-move/team-move-machines.d.ts.map +1 -0
  82. package/dist/backend/backend/src/services/team-move/team-move-machines.js +95 -0
  83. package/dist/backend/backend/src/services/team-move/team-move-machines.js.map +1 -0
  84. package/dist/backend/backend/src/services/team-move/team-move-preflight.d.ts +71 -0
  85. package/dist/backend/backend/src/services/team-move/team-move-preflight.d.ts.map +1 -0
  86. package/dist/backend/backend/src/services/team-move/team-move-preflight.js +102 -0
  87. package/dist/backend/backend/src/services/team-move/team-move-preflight.js.map +1 -0
  88. package/dist/backend/backend/src/services/team-move/team-move-runtime.d.ts +29 -0
  89. package/dist/backend/backend/src/services/team-move/team-move-runtime.d.ts.map +1 -0
  90. package/dist/backend/backend/src/services/team-move/team-move-runtime.js +173 -0
  91. package/dist/backend/backend/src/services/team-move/team-move-runtime.js.map +1 -0
  92. package/dist/backend/backend/src/services/team-move/team-move-secret-scan.d.ts +50 -0
  93. package/dist/backend/backend/src/services/team-move/team-move-secret-scan.d.ts.map +1 -0
  94. package/dist/backend/backend/src/services/team-move/team-move-secret-scan.js +96 -0
  95. package/dist/backend/backend/src/services/team-move/team-move-secret-scan.js.map +1 -0
  96. package/dist/backend/backend/src/services/team-move/team-move-select.d.ts +94 -0
  97. package/dist/backend/backend/src/services/team-move/team-move-select.d.ts.map +1 -0
  98. package/dist/backend/backend/src/services/team-move/team-move-select.js +124 -0
  99. package/dist/backend/backend/src/services/team-move/team-move-select.js.map +1 -0
  100. package/dist/backend/backend/src/services/team-move/team-move.fixture.d.ts +46 -0
  101. package/dist/backend/backend/src/services/team-move/team-move.fixture.d.ts.map +1 -0
  102. package/dist/backend/backend/src/services/team-move/team-move.fixture.js +202 -0
  103. package/dist/backend/backend/src/services/team-move/team-move.fixture.js.map +1 -0
  104. package/dist/backend/backend/src/services/team-move/team-move.types.d.ts +279 -0
  105. package/dist/backend/backend/src/services/team-move/team-move.types.d.ts.map +1 -0
  106. package/dist/backend/backend/src/services/team-move/team-move.types.js +44 -0
  107. package/dist/backend/backend/src/services/team-move/team-move.types.js.map +1 -0
  108. package/dist/backend/build-info.json +2 -2
  109. package/dist/cli/backend/src/constants.d.ts +82 -0
  110. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  111. package/dist/cli/backend/src/constants.js +82 -0
  112. package/dist/cli/backend/src/constants.js.map +1 -1
  113. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
  114. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  115. package/dist/cli/backend/src/services/cloud/cloud-sync.types.js +1 -0
  116. package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  117. package/dist/cli/backend/src/services/core/storage.service.d.ts +18 -0
  118. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  119. package/dist/cli/backend/src/services/core/storage.service.js +16 -0
  120. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  121. package/dist/cli/backend/src/services/decisions/decision.service.d.ts +19 -0
  122. package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  123. package/dist/cli/backend/src/services/decisions/decision.service.js +46 -0
  124. package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
  125. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +9 -0
  126. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  127. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +25 -0
  128. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  129. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
  130. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  131. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +41 -0
  132. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  133. package/dist/cli/cli/src/commands/team-move.d.ts +68 -0
  134. package/dist/cli/cli/src/commands/team-move.d.ts.map +1 -0
  135. package/dist/cli/cli/src/commands/team-move.js +159 -0
  136. package/dist/cli/cli/src/commands/team-move.js.map +1 -0
  137. package/dist/cli/cli/src/index.js +33 -0
  138. package/dist/cli/cli/src/index.js.map +1 -1
  139. package/package.json +1 -1
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Team move exporter (source machine).
3
+ *
4
+ * Collects everything Crewly owns about ONE team into a staging directory,
5
+ * writes a manifest with a hash for every file, runs the secret scan, and (in
6
+ * {@link buildEncryptedPackage}) turns the staging directory into an encrypted
7
+ * `tar.gz` stream.
8
+ *
9
+ * Package layout (POSIX paths):
10
+ *
11
+ * manifest.json
12
+ * team/** the team's folder: config, prompts, norms, SOPs,
13
+ * wiki vault, cron tasks
14
+ * agents/<session>/** agent memory, standing answers, session summaries
15
+ * handover/<file> newest handover notes per agent
16
+ * records/*.json task-pool items, decisions, chat channels and
17
+ * rooms, Slack channel mapping, scheduled messages
18
+ * projects/<id>/data/** `<project>/.crewly/**` (or the package-tree stores)
19
+ *
20
+ * Not in it: credentials, tokens, runtime logins, logs and transcripts,
21
+ * node_modules/build output and repository working trees (the repo list in
22
+ * the manifest lets the target clone them).
23
+ *
24
+ * @module services/team-move/team-move-exporter
25
+ */
26
+ import type { Project, Team } from '../../types/index.js';
27
+ import { type SecretEnvValue } from '../../utils/secret-env.js';
28
+ import { StagingArea } from './team-move-fs.js';
29
+ import { inspectRepo as defaultInspectRepo } from './team-move-git.js';
30
+ import type { CloudManifestSummary, PackageFileEntry, PackageRepo, TeamMoveManifest } from './team-move.types.js';
31
+ /** Thrown when a repository holds work that exists only on the source. */
32
+ export declare class TeamMoveBlockedError extends Error {
33
+ readonly lines: string[];
34
+ constructor(lines: string[]);
35
+ }
36
+ /** Collaborators of the exporter. */
37
+ export interface ExportDeps {
38
+ /** Crewly home of this machine. */
39
+ home?: string;
40
+ getTeams: () => Promise<Team[]>;
41
+ getProjects: () => Promise<Project[]>;
42
+ crewlyVersion: string;
43
+ source: {
44
+ instanceId: string | null;
45
+ deviceName: string | null;
46
+ };
47
+ /** Exact secret values this machine holds (env, settings). */
48
+ knownSecrets?: () => Promise<SecretEnvValue[]>;
49
+ inspectRepo?: typeof defaultInspectRepo;
50
+ now?: () => string;
51
+ /** Caps for the working files of non-git projects; default from constants / env. */
52
+ workLimits?: WorkFileLimits;
53
+ }
54
+ /** Size caps for the working files of projects that are not git repositories. */
55
+ export interface WorkFileLimits {
56
+ /** All such projects together. */
57
+ totalBytes: number;
58
+ /** One file. */
59
+ fileBytes: number;
60
+ }
61
+ /**
62
+ * The caps for non-git project files: constants, overridable in megabytes by
63
+ * `CREWLY_TEAM_MOVE_WORK_MAX_MB` and `CREWLY_TEAM_MOVE_WORK_FILE_MAX_MB`.
64
+ *
65
+ * @param env - Environment to read overrides from
66
+ * @returns The caps in bytes
67
+ */
68
+ export declare function resolveWorkFileLimits(env?: NodeJS.ProcessEnv): WorkFileLimits;
69
+ /** Whether a repo record says the folder is not a git repository (its files travel instead of being cloned). */
70
+ export declare function isPlainFolder(repo: PackageRepo): boolean;
71
+ /** Options of one export. */
72
+ export interface ExportOptions {
73
+ teamId: string;
74
+ moveId: string;
75
+ /** Directory the package is assembled in (created). */
76
+ stagingDir: string;
77
+ /** Move although a repository has uncommitted or unpushed work. */
78
+ allowDirty?: boolean;
79
+ /** Leave files with secrets out of the package instead of aborting (only free-form notes and project files). */
80
+ skipFlagged?: boolean;
81
+ }
82
+ /** What an export produced. */
83
+ export interface ExportResult {
84
+ manifest: TeamMoveManifest;
85
+ staging: StagingArea;
86
+ /** What Cloud receives with `package/init`. */
87
+ summary: CloudManifestSummary;
88
+ /** Lines describing uncommitted/unpushed work that was allowed through. */
89
+ dirtyRepos: string[];
90
+ }
91
+ /**
92
+ * Prepare a team config for another machine: nothing is running there yet.
93
+ *
94
+ * @param raw - Parsed `config.json`
95
+ * @returns Copy with runtime state cleared
96
+ */
97
+ export declare function sanitizeTeamForMove(raw: Record<string, unknown>): Record<string, unknown>;
98
+ /** The exporter. */
99
+ export declare class TeamMoveExporter {
100
+ private readonly deps;
101
+ private readonly home;
102
+ private readonly now;
103
+ private readonly inspect;
104
+ constructor(deps: ExportDeps);
105
+ /**
106
+ * Check, before anything is built, that no repository holds work only this
107
+ * machine has. Used by the REST entry point so the owner learns what to
108
+ * push before a move is even requested.
109
+ *
110
+ * @param teamId - Team to move
111
+ * @returns The repos and the lines that block the move
112
+ */
113
+ checkRepos(teamId: string): Promise<{
114
+ repos: PackageRepo[];
115
+ blocking: string[];
116
+ }>;
117
+ private requireTeam;
118
+ private teamProjects;
119
+ /**
120
+ * Collect, scan and describe the package.
121
+ *
122
+ * @param options - Team, move, staging directory, policy flags
123
+ * @returns Manifest, staging area and the Cloud summary
124
+ * @throws TeamMoveBlockedError for unpushed work; TeamMoveSecretScanError for secrets
125
+ */
126
+ export(options: ExportOptions): Promise<ExportResult>;
127
+ /** The things a move deliberately leaves out, shown to the owner. */
128
+ private notMovedList;
129
+ /** Global-store records of the team. */
130
+ private collectRecords;
131
+ /**
132
+ * Copy each project's Crewly data under the size caps.
133
+ *
134
+ * @returns Manifest entries of the projects
135
+ */
136
+ private collectProjects;
137
+ /**
138
+ * Copy the working files of projects that are not git repositories (a git
139
+ * project is cloned on the target instead). Dependencies, build output,
140
+ * logs and `.DS_Store` stay out; the caps leave the biggest files behind
141
+ * and every skipped file is listed in the manifest.
142
+ */
143
+ private collectWorkFiles;
144
+ /** Tools and connectors the team's own words mention (prompts, norms, SOPs, cron tasks). */
145
+ private detectNeeds;
146
+ }
147
+ /**
148
+ * The small summary Cloud receives (kept far below its 64 KB limit).
149
+ *
150
+ * @param manifest - Full manifest
151
+ * @returns Summary without file names
152
+ */
153
+ export declare function summarize(manifest: TeamMoveManifest): CloudManifestSummary;
154
+ /** Result of {@link buildEncryptedPackage}. */
155
+ export interface EncryptedPackage {
156
+ /** Absolute path of the ciphertext file. */
157
+ file: string;
158
+ /** Ciphertext size in bytes. */
159
+ size: number;
160
+ /** Hex SHA-256 of the ciphertext. */
161
+ sha256: string;
162
+ /** Upload chunks (8 MiB each, the last shorter). */
163
+ chunks: number;
164
+ }
165
+ /**
166
+ * Tar+gzip a staging directory and encrypt it for the target.
167
+ *
168
+ * @param stagingDir - Directory built by {@link TeamMoveExporter.export}
169
+ * @param outFile - Where the ciphertext is written
170
+ * @param recipientPublicKey - Target's base64 X25519 public key
171
+ * @param moveId - Move id (bound into the encryption)
172
+ * @returns File, size, hash and chunk count of the ciphertext
173
+ */
174
+ export declare function buildEncryptedPackage(stagingDir: string, outFile: string, recipientPublicKey: string, moveId: string): Promise<EncryptedPackage>;
175
+ /**
176
+ * Package entries sorted for stable comparisons in tests.
177
+ *
178
+ * @param files - Manifest file entries
179
+ * @returns Paths
180
+ */
181
+ export declare function packagePaths(files: readonly PackageFileEntry[]): string[];
182
+ //# sourceMappingURL=team-move-exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-move-exporter.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/team-move/team-move-exporter.ts"],"names":[],"mappings":"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"}