@sift-wiki/conductor 0.1.0 → 0.2.0-beta.1

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 (65) hide show
  1. package/README.md +28 -58
  2. package/dist/cli.d.ts +6 -0
  3. package/dist/cli.js +29 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/conductorClient.d.ts +192 -1
  6. package/dist/conductorClient.js +61 -3
  7. package/dist/conductorClient.js.map +1 -1
  8. package/dist/daemon.d.ts +4 -0
  9. package/dist/daemon.js +42 -2
  10. package/dist/daemon.js.map +1 -1
  11. package/dist/desktop/app/contracts.d.ts +71 -0
  12. package/dist/desktop/app/contracts.js +19 -0
  13. package/dist/desktop/app/contracts.js.map +1 -0
  14. package/dist/desktop/app/controller.d.ts +58 -0
  15. package/dist/desktop/app/controller.js +161 -0
  16. package/dist/desktop/app/controller.js.map +1 -0
  17. package/dist/desktop/app/runtimeController.d.ts +22 -0
  18. package/dist/desktop/app/runtimeController.js +44 -0
  19. package/dist/desktop/app/runtimeController.js.map +1 -0
  20. package/dist/localApi/authorizedPairing.d.ts +12 -0
  21. package/dist/localApi/authorizedPairing.js +18 -0
  22. package/dist/localApi/authorizedPairing.js.map +1 -0
  23. package/dist/localApi/contracts.d.ts +253 -0
  24. package/dist/localApi/contracts.js +173 -0
  25. package/dist/localApi/contracts.js.map +1 -0
  26. package/dist/localApi/server.d.ts +20 -0
  27. package/dist/localApi/server.js +412 -0
  28. package/dist/localApi/server.js.map +1 -0
  29. package/dist/localApi/workConsole.d.ts +74 -0
  30. package/dist/localApi/workConsole.js +342 -0
  31. package/dist/localApi/workConsole.js.map +1 -0
  32. package/dist/localApi/workContracts.d.ts +213 -0
  33. package/dist/localApi/workContracts.js +130 -0
  34. package/dist/localApi/workContracts.js.map +1 -0
  35. package/dist/localApp/platform.d.ts +2 -0
  36. package/dist/localApp/platform.js +57 -0
  37. package/dist/localApp/platform.js.map +1 -0
  38. package/dist/localApp/service.d.ts +25 -0
  39. package/dist/localApp/service.js +114 -0
  40. package/dist/localApp/service.js.map +1 -0
  41. package/dist/runtime/localLogSpool.d.ts +1 -0
  42. package/dist/runtime/localLogSpool.js +4 -0
  43. package/dist/runtime/localLogSpool.js.map +1 -1
  44. package/dist/userAuth/service.d.ts +26 -0
  45. package/dist/userAuth/service.js +170 -0
  46. package/dist/userAuth/service.js.map +1 -0
  47. package/dist/userAuth/store.d.ts +42 -0
  48. package/dist/userAuth/store.js +160 -0
  49. package/dist/userAuth/store.js.map +1 -0
  50. package/dist/userAuth/types.d.ts +63 -0
  51. package/dist/userAuth/types.js +29 -0
  52. package/dist/userAuth/types.js.map +1 -0
  53. package/dist/version.d.ts +1 -1
  54. package/dist/version.js +1 -1
  55. package/dist/version.js.map +1 -1
  56. package/dist/workTypes.d.ts +160 -29
  57. package/dist/workTypes.js +31 -0
  58. package/dist/workTypes.js.map +1 -1
  59. package/dist-web/assets/index-CWfnzdLn.css +1 -0
  60. package/dist-web/assets/index-D5X9InfE.js +72 -0
  61. package/dist-web/index.html +15 -0
  62. package/docs/provider-setup.md +81 -0
  63. package/docs/quickstart.md +62 -0
  64. package/docs/troubleshooting.md +63 -0
  65. package/package.json +13 -3
@@ -0,0 +1,42 @@
1
+ import { type StoredUserAuthorization, type UserCredentialStore } from "./types.js";
2
+ type CommandResult = {
3
+ stdout: string;
4
+ stderr: string;
5
+ };
6
+ type CommandRunner = (file: string, args: string[]) => Promise<CommandResult>;
7
+ type DpapiRunner = (operation: "protect" | "unprotect", value: string) => Promise<string>;
8
+ export declare function createUserCredentialStore(input?: {
9
+ platform?: NodeJS.Platform | undefined;
10
+ metadataPath?: string | undefined;
11
+ secretPath?: string | undefined;
12
+ }): UserCredentialStore;
13
+ export declare class RestrictedFileUserCredentialStore implements UserCredentialStore {
14
+ readonly path: string;
15
+ readonly storageKind: "restricted-file";
16
+ constructor(path?: string);
17
+ read(): Promise<StoredUserAuthorization | undefined>;
18
+ write(value: StoredUserAuthorization): Promise<void>;
19
+ delete(): Promise<void>;
20
+ }
21
+ export declare class MacKeychainUserCredentialStore implements UserCredentialStore {
22
+ readonly metadataPath: string;
23
+ private readonly runCommand;
24
+ readonly storageKind: "macos-keychain";
25
+ constructor(metadataPath?: string, runCommand?: CommandRunner);
26
+ read(): Promise<StoredUserAuthorization | undefined>;
27
+ write(value: StoredUserAuthorization): Promise<void>;
28
+ delete(): Promise<void>;
29
+ }
30
+ export declare class WindowsDpapiUserCredentialStore implements UserCredentialStore {
31
+ readonly metadataPath: string;
32
+ readonly secretPath: string;
33
+ private readonly dpapi;
34
+ readonly storageKind: "windows-dpapi";
35
+ constructor(metadataPath?: string, secretPath?: string, dpapi?: DpapiRunner);
36
+ read(): Promise<StoredUserAuthorization | undefined>;
37
+ write(value: StoredUserAuthorization): Promise<void>;
38
+ delete(): Promise<void>;
39
+ }
40
+ export declare function defaultUserMetadataPath(env?: NodeJS.ProcessEnv): string;
41
+ export declare function defaultUserSecretPath(env?: NodeJS.ProcessEnv): string;
42
+ export {};
@@ -0,0 +1,160 @@
1
+ import { execFile } from "node:child_process";
2
+ import { chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { promisify } from "node:util";
5
+ import { defaultConfigPath } from "../config.js";
6
+ import { storedUserAuthorizationSchema } from "./types.js";
7
+ const execFileAsync = promisify(execFile);
8
+ const KEYCHAIN_SERVICE = "wiki.sift.conductor.user";
9
+ const KEYCHAIN_ACCOUNT = "default";
10
+ const storedUserMetadataSchema = storedUserAuthorizationSchema.omit({ token: true });
11
+ export function createUserCredentialStore(input = {}) {
12
+ const platform = input.platform ?? process.platform;
13
+ const metadataPath = input.metadataPath ?? defaultUserMetadataPath();
14
+ if (platform === "darwin")
15
+ return new MacKeychainUserCredentialStore(metadataPath);
16
+ if (platform === "win32") {
17
+ return new WindowsDpapiUserCredentialStore(metadataPath, input.secretPath ?? defaultUserSecretPath());
18
+ }
19
+ return new RestrictedFileUserCredentialStore(metadataPath);
20
+ }
21
+ export class RestrictedFileUserCredentialStore {
22
+ path;
23
+ storageKind = "restricted-file";
24
+ constructor(path = defaultUserMetadataPath()) {
25
+ this.path = path;
26
+ }
27
+ async read() {
28
+ const value = await readJsonIfPresent(this.path);
29
+ return value === undefined ? undefined : storedUserAuthorizationSchema.parse(value);
30
+ }
31
+ async write(value) {
32
+ await atomicPrivateJsonWrite(this.path, storedUserAuthorizationSchema.parse(value));
33
+ }
34
+ delete() {
35
+ return rm(this.path, { force: true });
36
+ }
37
+ }
38
+ export class MacKeychainUserCredentialStore {
39
+ metadataPath;
40
+ runCommand;
41
+ storageKind = "macos-keychain";
42
+ constructor(metadataPath = defaultUserMetadataPath(), runCommand = runExecFile) {
43
+ this.metadataPath = metadataPath;
44
+ this.runCommand = runCommand;
45
+ }
46
+ async read() {
47
+ const metadata = await readMetadata(this.metadataPath);
48
+ if (metadata === undefined)
49
+ return undefined;
50
+ let token;
51
+ try {
52
+ token = (await this.runCommand("security", ["find-generic-password", "-a", KEYCHAIN_ACCOUNT, "-s", KEYCHAIN_SERVICE, "-w"])).stdout.trim();
53
+ }
54
+ catch {
55
+ throw new Error("Sift Conductor user authorization is missing from macOS Keychain. Sign in again.");
56
+ }
57
+ return storedUserAuthorizationSchema.parse({ ...metadata, token });
58
+ }
59
+ async write(value) {
60
+ const parsed = storedUserAuthorizationSchema.parse(value);
61
+ const metadata = withoutToken(parsed);
62
+ await this.runCommand("security", ["add-generic-password", "-U", "-a", KEYCHAIN_ACCOUNT, "-s", KEYCHAIN_SERVICE, "-w", parsed.token]);
63
+ await atomicPrivateJsonWrite(this.metadataPath, metadata);
64
+ }
65
+ async delete() {
66
+ await this.runCommand("security", ["delete-generic-password", "-a", KEYCHAIN_ACCOUNT, "-s", KEYCHAIN_SERVICE]).catch(() => undefined);
67
+ await rm(this.metadataPath, { force: true });
68
+ }
69
+ }
70
+ export class WindowsDpapiUserCredentialStore {
71
+ metadataPath;
72
+ secretPath;
73
+ dpapi;
74
+ storageKind = "windows-dpapi";
75
+ constructor(metadataPath = defaultUserMetadataPath(), secretPath = defaultUserSecretPath(), dpapi = runDpapi) {
76
+ this.metadataPath = metadataPath;
77
+ this.secretPath = secretPath;
78
+ this.dpapi = dpapi;
79
+ }
80
+ async read() {
81
+ const metadata = await readMetadata(this.metadataPath);
82
+ if (metadata === undefined)
83
+ return undefined;
84
+ const encrypted = await readFile(this.secretPath, "utf8").catch(() => undefined);
85
+ if (encrypted === undefined)
86
+ throw new Error("Sift Conductor user authorization is missing from Windows credential storage. Sign in again.");
87
+ const token = await this.dpapi("unprotect", encrypted.trim());
88
+ return storedUserAuthorizationSchema.parse({ ...metadata, token });
89
+ }
90
+ async write(value) {
91
+ const parsed = storedUserAuthorizationSchema.parse(value);
92
+ const metadata = withoutToken(parsed);
93
+ const encrypted = await this.dpapi("protect", parsed.token);
94
+ await atomicPrivateTextWrite(this.secretPath, `${encrypted}\n`);
95
+ await atomicPrivateJsonWrite(this.metadataPath, metadata);
96
+ }
97
+ async delete() {
98
+ await Promise.all([rm(this.metadataPath, { force: true }), rm(this.secretPath, { force: true })]);
99
+ }
100
+ }
101
+ export function defaultUserMetadataPath(env = process.env) {
102
+ return path.join(path.dirname(defaultConfigPath(env)), "user-authorization.json");
103
+ }
104
+ export function defaultUserSecretPath(env = process.env) {
105
+ return path.join(path.dirname(defaultConfigPath(env)), "user-authorization.dpapi");
106
+ }
107
+ async function runDpapi(operation, value) {
108
+ const script = operation === "protect"
109
+ ? "$b=[Text.Encoding]::UTF8.GetBytes($env:SIFT_CONDUCTOR_SECRET);$e=[Security.Cryptography.ProtectedData]::Protect($b,$null,[Security.Cryptography.DataProtectionScope]::CurrentUser);[Convert]::ToBase64String($e)"
110
+ : "$e=[Convert]::FromBase64String($env:SIFT_CONDUCTOR_SECRET);$b=[Security.Cryptography.ProtectedData]::Unprotect($e,$null,[Security.Cryptography.DataProtectionScope]::CurrentUser);[Text.Encoding]::UTF8.GetString($b)";
111
+ const result = await execFileAsync("powershell.exe", ["-NoProfile", "-NonInteractive", "-Command", script], {
112
+ windowsHide: true,
113
+ env: { ...process.env, SIFT_CONDUCTOR_SECRET: value },
114
+ });
115
+ const output = result.stdout.trim();
116
+ if (output.length === 0)
117
+ throw new Error("Windows credential protection returned no data.");
118
+ return output;
119
+ }
120
+ async function readMetadata(filePath) {
121
+ const value = await readJsonIfPresent(filePath);
122
+ if (value === undefined)
123
+ return undefined;
124
+ return storedUserMetadataSchema.parse(value);
125
+ }
126
+ async function runExecFile(file, args) {
127
+ const result = await execFileAsync(file, args);
128
+ return { stdout: result.stdout, stderr: result.stderr };
129
+ }
130
+ async function readJsonIfPresent(filePath) {
131
+ try {
132
+ return JSON.parse(await readFile(filePath, "utf8"));
133
+ }
134
+ catch (error) {
135
+ if (isNodeError(error) && error.code === "ENOENT")
136
+ return undefined;
137
+ throw error;
138
+ }
139
+ }
140
+ async function atomicPrivateJsonWrite(filePath, value) {
141
+ await atomicPrivateTextWrite(filePath, `${JSON.stringify(value, null, 2)}\n`);
142
+ }
143
+ async function atomicPrivateTextWrite(filePath, value) {
144
+ await mkdir(path.dirname(filePath), { recursive: true });
145
+ const temporary = `${filePath}.${String(process.pid)}.tmp`;
146
+ await writeFile(temporary, value, { mode: 0o600 });
147
+ await chmod(temporary, 0o600);
148
+ await rename(temporary, filePath);
149
+ await chmod(filePath, 0o600);
150
+ }
151
+ function withoutToken(value) {
152
+ const { token, ...metadata } = storedUserAuthorizationSchema.parse(value);
153
+ if (token.length === 0)
154
+ throw new Error("Stored Sift user token is empty.");
155
+ return storedUserMetadataSchema.parse(metadata);
156
+ }
157
+ function isNodeError(error) {
158
+ return error instanceof Error && "code" in error;
159
+ }
160
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/userAuth/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { z } from "zod";
2
+ export declare const userCapabilitySchema: z.ZodEnum<{
3
+ "source:write": "source:write";
4
+ "source:manage": "source:manage";
5
+ "record:read": "record:read";
6
+ "record:write": "record:write";
7
+ "skill:update": "skill:update";
8
+ "event:audit:read": "event:audit:read";
9
+ "workspace:govern": "workspace:govern";
10
+ "workspace:own": "workspace:own";
11
+ }>;
12
+ export type UserCapability = z.infer<typeof userCapabilitySchema>;
13
+ export declare const storedUserAuthorizationSchema: z.ZodObject<{
14
+ apiBaseUrl: z.ZodURL;
15
+ appBaseUrl: z.ZodURL;
16
+ token: z.ZodString;
17
+ tokenId: z.ZodString;
18
+ tokenLabel: z.ZodString;
19
+ tokenExpiresAt: z.ZodISODateTime;
20
+ workspaceId: z.ZodString;
21
+ brainId: z.ZodString;
22
+ principalId: z.ZodString;
23
+ capabilities: z.ZodArray<z.ZodEnum<{
24
+ "source:write": "source:write";
25
+ "source:manage": "source:manage";
26
+ "record:read": "record:read";
27
+ "record:write": "record:write";
28
+ "skill:update": "skill:update";
29
+ "event:audit:read": "event:audit:read";
30
+ "workspace:govern": "workspace:govern";
31
+ "workspace:own": "workspace:own";
32
+ }>>;
33
+ }, z.core.$strict>;
34
+ export type StoredUserAuthorization = z.infer<typeof storedUserAuthorizationSchema>;
35
+ export type UserCredentialStore = {
36
+ readonly storageKind: "macos-keychain" | "windows-dpapi" | "restricted-file" | "memory";
37
+ read(): Promise<StoredUserAuthorization | undefined>;
38
+ write(value: StoredUserAuthorization): Promise<void>;
39
+ delete(): Promise<void>;
40
+ };
41
+ export type UserAuthorizationStatus = {
42
+ state: "signed_out";
43
+ storageKind: UserCredentialStore["storageKind"];
44
+ message?: string | undefined;
45
+ } | {
46
+ state: "pending";
47
+ storageKind: UserCredentialStore["storageKind"];
48
+ verificationUri: string;
49
+ userCode: string;
50
+ expiresAt: string;
51
+ } | {
52
+ state: "authorized";
53
+ storageKind: UserCredentialStore["storageKind"];
54
+ apiBaseUrl: string;
55
+ appBaseUrl: string;
56
+ workspaceId: string;
57
+ brainId: string;
58
+ principalId: string;
59
+ tokenLabel: string;
60
+ tokenExpiresAt: string;
61
+ capabilities: UserCapability[];
62
+ };
63
+ export declare const userAuthorizationStatusSchema: z.ZodType<UserAuthorizationStatus>;
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ export const userCapabilitySchema = z.enum([
3
+ "source:write",
4
+ "source:manage",
5
+ "record:read",
6
+ "record:write",
7
+ "skill:update",
8
+ "event:audit:read",
9
+ "workspace:govern",
10
+ "workspace:own",
11
+ ]);
12
+ export const storedUserAuthorizationSchema = z.object({
13
+ apiBaseUrl: z.url(),
14
+ appBaseUrl: z.url(),
15
+ token: z.string().min(1),
16
+ tokenId: z.string().min(1),
17
+ tokenLabel: z.string().min(1),
18
+ tokenExpiresAt: z.iso.datetime(),
19
+ workspaceId: z.string().min(1),
20
+ brainId: z.string().min(1),
21
+ principalId: z.string().min(1),
22
+ capabilities: z.array(userCapabilitySchema),
23
+ }).strict();
24
+ export const userAuthorizationStatusSchema = z.discriminatedUnion("state", [
25
+ z.object({ state: z.literal("signed_out"), storageKind: z.enum(["macos-keychain", "windows-dpapi", "restricted-file", "memory"]), message: z.string().optional() }).strict(),
26
+ z.object({ state: z.literal("pending"), storageKind: z.enum(["macos-keychain", "windows-dpapi", "restricted-file", "memory"]), verificationUri: z.url(), userCode: z.string(), expiresAt: z.iso.datetime() }).strict(),
27
+ z.object({ state: z.literal("authorized"), storageKind: z.enum(["macos-keychain", "windows-dpapi", "restricted-file", "memory"]), apiBaseUrl: z.url(), appBaseUrl: z.url(), workspaceId: z.string(), brainId: z.string(), principalId: z.string(), tokenLabel: z.string(), tokenExpiresAt: z.iso.datetime(), capabilities: z.array(userCapabilitySchema) }).strict(),
28
+ ]);
29
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/userAuth/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,cAAc;IACd,eAAe;IACf,aAAa;IACb,cAAc;IACd,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;CAChB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;CAC5C,CAAC,CAAC,MAAM,EAAE,CAAC;AAiCZ,MAAM,CAAC,MAAM,6BAA6B,GAAuC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;IAC7G,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5K,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACtN,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;CACrW,CAAC,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const CONDUCTOR_VERSION = "0.1.0";
1
+ export declare const CONDUCTOR_VERSION = "0.2.0-beta.1";
2
2
  export declare const PROTOCOL_VERSION = "v1";
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
- export const CONDUCTOR_VERSION = "0.1.0";
1
+ export const CONDUCTOR_VERSION = "0.2.0-beta.1";
2
2
  export const PROTOCOL_VERSION = "v1";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC"}
@@ -100,6 +100,147 @@ export declare const workUsageDecisionSchema: z.ZodObject<{
100
100
  }, z.core.$strip>;
101
101
  hardStop: z.ZodBoolean;
102
102
  }, z.core.$strip>;
103
+ export declare const workProjectSchema: z.ZodObject<{
104
+ id: z.ZodString;
105
+ name: z.ZodString;
106
+ description: z.ZodOptional<z.ZodString>;
107
+ status: z.ZodEnum<{
108
+ cancelled: "cancelled";
109
+ planned: "planned";
110
+ active: "active";
111
+ completed: "completed";
112
+ }>;
113
+ leadPrincipalId: z.ZodOptional<z.ZodString>;
114
+ contextRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
115
+ members: z.ZodDefault<z.ZodArray<z.ZodObject<{
116
+ principalId: z.ZodString;
117
+ role: z.ZodEnum<{
118
+ lead: "lead";
119
+ member: "member";
120
+ reviewer: "reviewer";
121
+ }>;
122
+ }, z.core.$loose>>>;
123
+ updatedAt: z.ZodString;
124
+ }, z.core.$loose>;
125
+ export declare const workActivitySchema: z.ZodObject<{
126
+ id: z.ZodString;
127
+ action: z.ZodString;
128
+ entityType: z.ZodString;
129
+ entityId: z.ZodString;
130
+ taskId: z.ZodOptional<z.ZodString>;
131
+ runId: z.ZodOptional<z.ZodString>;
132
+ occurredAt: z.ZodString;
133
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
134
+ }, z.core.$loose>;
135
+ export declare const workTaskDetailSchema: z.ZodObject<{
136
+ task: z.ZodObject<{
137
+ id: z.ZodString;
138
+ workspaceId: z.ZodString;
139
+ brainId: z.ZodString;
140
+ projectId: z.ZodOptional<z.ZodString>;
141
+ parentTaskId: z.ZodOptional<z.ZodString>;
142
+ title: z.ZodString;
143
+ bodyMarkdown: z.ZodString;
144
+ versionNumber: z.ZodNumber;
145
+ status: z.ZodEnum<{
146
+ backlog: "backlog";
147
+ todo: "todo";
148
+ in_progress: "in_progress";
149
+ in_review: "in_review";
150
+ blocked: "blocked";
151
+ done: "done";
152
+ cancelled: "cancelled";
153
+ }>;
154
+ priority: z.ZodEnum<{
155
+ critical: "critical";
156
+ high: "high";
157
+ medium: "medium";
158
+ low: "low";
159
+ }>;
160
+ assigneePrincipalId: z.ZodOptional<z.ZodString>;
161
+ checkoutRunId: z.ZodOptional<z.ZodString>;
162
+ contextRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
163
+ createdAt: z.ZodString;
164
+ updatedAt: z.ZodString;
165
+ }, z.core.$loose>;
166
+ comments: z.ZodDefault<z.ZodArray<z.ZodObject<{
167
+ id: z.ZodString;
168
+ taskId: z.ZodString;
169
+ authorPrincipalId: z.ZodString;
170
+ runId: z.ZodOptional<z.ZodString>;
171
+ bodyMarkdown: z.ZodString;
172
+ createdAt: z.ZodString;
173
+ }, z.core.$loose>>>;
174
+ artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
175
+ id: z.ZodString;
176
+ taskId: z.ZodString;
177
+ runId: z.ZodOptional<z.ZodString>;
178
+ type: z.ZodString;
179
+ provider: z.ZodString;
180
+ title: z.ZodString;
181
+ url: z.ZodOptional<z.ZodString>;
182
+ brainRecordId: z.ZodOptional<z.ZodString>;
183
+ status: z.ZodEnum<{
184
+ pending: "pending";
185
+ ready: "ready";
186
+ failed: "failed";
187
+ superseded: "superseded";
188
+ }>;
189
+ reviewState: z.ZodEnum<{
190
+ pending: "pending";
191
+ none: "none";
192
+ approved: "approved";
193
+ rejected: "rejected";
194
+ revision_requested: "revision_requested";
195
+ }>;
196
+ summary: z.ZodOptional<z.ZodString>;
197
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
198
+ }, z.core.$loose>>>;
199
+ approvals: z.ZodDefault<z.ZodArray<z.ZodObject<{
200
+ id: z.ZodString;
201
+ taskId: z.ZodString;
202
+ type: z.ZodString;
203
+ status: z.ZodEnum<{
204
+ pending: "pending";
205
+ approved: "approved";
206
+ rejected: "rejected";
207
+ revision_requested: "revision_requested";
208
+ }>;
209
+ payload: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
210
+ decisionNote: z.ZodOptional<z.ZodString>;
211
+ }, z.core.$loose>>>;
212
+ blockers: z.ZodDefault<z.ZodArray<z.ZodObject<{
213
+ id: z.ZodString;
214
+ workspaceId: z.ZodString;
215
+ brainId: z.ZodString;
216
+ projectId: z.ZodOptional<z.ZodString>;
217
+ parentTaskId: z.ZodOptional<z.ZodString>;
218
+ title: z.ZodString;
219
+ bodyMarkdown: z.ZodString;
220
+ versionNumber: z.ZodNumber;
221
+ status: z.ZodEnum<{
222
+ backlog: "backlog";
223
+ todo: "todo";
224
+ in_progress: "in_progress";
225
+ in_review: "in_review";
226
+ blocked: "blocked";
227
+ done: "done";
228
+ cancelled: "cancelled";
229
+ }>;
230
+ priority: z.ZodEnum<{
231
+ critical: "critical";
232
+ high: "high";
233
+ medium: "medium";
234
+ low: "low";
235
+ }>;
236
+ assigneePrincipalId: z.ZodOptional<z.ZodString>;
237
+ checkoutRunId: z.ZodOptional<z.ZodString>;
238
+ contextRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
239
+ createdAt: z.ZodString;
240
+ updatedAt: z.ZodString;
241
+ }, z.core.$loose>>>;
242
+ projectContextRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
243
+ }, z.core.$loose>;
103
244
  export type WorkTask = z.infer<typeof workTaskSchema>;
104
245
  export type WorkTaskStatus = z.infer<typeof workTaskStatusSchema>;
105
246
  export type WorkTaskComment = z.infer<typeof workTaskCommentSchema>;
@@ -129,19 +270,7 @@ export type WorkArtifactInput = {
129
270
  metadata?: Record<string, unknown> | undefined;
130
271
  idempotencyKey?: string | undefined;
131
272
  };
132
- export type WorkProject = {
133
- id: string;
134
- name: string;
135
- description?: string | undefined;
136
- status: "planned" | "active" | "completed" | "cancelled";
137
- leadPrincipalId?: string | undefined;
138
- contextRefs: string[];
139
- members: Array<{
140
- principalId: string;
141
- role: "lead" | "member" | "reviewer";
142
- }>;
143
- updatedAt: string;
144
- };
273
+ export type WorkProject = z.infer<typeof workProjectSchema>;
145
274
  export type WorkRoutine = {
146
275
  id: string;
147
276
  projectId?: string | undefined;
@@ -162,21 +291,23 @@ export type WorkPolicy = {
162
291
  hardStopEnabled: boolean;
163
292
  isActive: boolean;
164
293
  };
165
- export type WorkActivity = {
166
- id: string;
167
- action: string;
168
- entityType: string;
169
- entityId: string;
170
- taskId?: string | undefined;
171
- runId?: string | undefined;
172
- occurredAt: string;
173
- metadata: Record<string, unknown>;
294
+ export type WorkActivity = z.infer<typeof workActivitySchema>;
295
+ export type WorkTaskDetail = z.infer<typeof workTaskDetailSchema>;
296
+ export type CreateWorkTaskRequest = {
297
+ projectId?: string | undefined;
298
+ parentTaskId?: string | undefined;
299
+ title: string;
300
+ bodyMarkdown?: string | undefined;
301
+ status?: WorkTaskStatus | undefined;
302
+ priority?: WorkTask["priority"] | undefined;
303
+ assigneePrincipalId?: string | undefined;
304
+ contextRefs?: string[] | undefined;
174
305
  };
175
- export type WorkTaskDetail = {
176
- task: WorkTask;
177
- comments: WorkTaskComment[];
178
- artifacts: WorkArtifact[];
179
- approvals: WorkApproval[];
180
- blockers: WorkTask[];
181
- projectContextRefs: string[];
306
+ export type UpdateWorkTaskRequest = {
307
+ taskId: string;
308
+ title?: string | undefined;
309
+ bodyMarkdown?: string | undefined;
310
+ status?: WorkTaskStatus | undefined;
311
+ priority?: WorkTask["priority"] | undefined;
312
+ assigneePrincipalId?: string | undefined;
182
313
  };
package/dist/workTypes.js CHANGED
@@ -72,4 +72,35 @@ export const workUsageDecisionSchema = z.object({
72
72
  }),
73
73
  hardStop: z.boolean(),
74
74
  });
75
+ export const workProjectSchema = z.looseObject({
76
+ id: z.string(),
77
+ name: z.string(),
78
+ description: z.string().optional(),
79
+ status: z.enum(["planned", "active", "completed", "cancelled"]),
80
+ leadPrincipalId: z.string().optional(),
81
+ contextRefs: z.array(z.string()).default([]),
82
+ members: z.array(z.looseObject({
83
+ principalId: z.string(),
84
+ role: z.enum(["lead", "member", "reviewer"]),
85
+ })).default([]),
86
+ updatedAt: z.string(),
87
+ });
88
+ export const workActivitySchema = z.looseObject({
89
+ id: z.string(),
90
+ action: z.string(),
91
+ entityType: z.string(),
92
+ entityId: z.string(),
93
+ taskId: z.string().optional(),
94
+ runId: z.string().optional(),
95
+ occurredAt: z.string(),
96
+ metadata: jsonObjectSchema.default({}),
97
+ });
98
+ export const workTaskDetailSchema = z.object({
99
+ task: workTaskSchema,
100
+ comments: z.array(workTaskCommentSchema).default([]),
101
+ artifacts: z.array(workArtifactSchema).default([]),
102
+ approvals: z.array(workApprovalSchema).default([]),
103
+ blockers: z.array(workTaskSchema).default([]),
104
+ projectContextRefs: z.array(z.string()).default([]),
105
+ }).loose();
75
106
  //# sourceMappingURL=workTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workTypes.js","sourceRoot":"","sources":["../src/workTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workTypes.js","sourceRoot":"","sources":["../src/workTypes.ts"],"names":[],"mappings":"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"}