human2ai 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +120 -0
- package/assets/quaternius/License_Standard.txt +22 -0
- package/assets/quaternius/README.md +31 -0
- package/assets/quaternius/Superhero_Female_FullBody.bin +0 -0
- package/assets/quaternius/Superhero_Female_FullBody.gltf +2056 -0
- package/assets/quaternius/Superhero_Male_FullBody.bin +0 -0
- package/assets/quaternius/Superhero_Male_FullBody.gltf +2018 -0
- package/dist/cli/integration.d.ts +39 -0
- package/dist/cli/integration.js +466 -0
- package/dist/cli/integration.js.map +1 -0
- package/dist/cli/main.d.ts +17 -0
- package/dist/cli/main.js +1455 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/database/composition-session-repository.d.ts +37 -0
- package/dist/database/composition-session-repository.js +147 -0
- package/dist/database/composition-session-repository.js.map +1 -0
- package/dist/database/draft-version-errors.d.ts +29 -0
- package/dist/database/draft-version-errors.js +47 -0
- package/dist/database/draft-version-errors.js.map +1 -0
- package/dist/database/draft-version-store.d.ts +30 -0
- package/dist/database/draft-version-store.js +168 -0
- package/dist/database/draft-version-store.js.map +1 -0
- package/dist/database/image-asset-repository.d.ts +37 -0
- package/dist/database/image-asset-repository.js +101 -0
- package/dist/database/image-asset-repository.js.map +1 -0
- package/dist/database/image-input.d.ts +15 -0
- package/dist/database/image-input.js +28 -0
- package/dist/database/image-input.js.map +1 -0
- package/dist/database/migrate.d.ts +4 -0
- package/dist/database/migrate.js +45 -0
- package/dist/database/migrate.js.map +1 -0
- package/dist/database/project-session-repository.d.ts +72 -0
- package/dist/database/project-session-repository.js +291 -0
- package/dist/database/project-session-repository.js.map +1 -0
- package/dist/database/spatial-session-repository.d.ts +26 -0
- package/dist/database/spatial-session-repository.js +44 -0
- package/dist/database/spatial-session-repository.js.map +1 -0
- package/dist/database/style-library-repository.d.ts +70 -0
- package/dist/database/style-library-repository.js +290 -0
- package/dist/database/style-library-repository.js.map +1 -0
- package/dist/database/svg-input.d.ts +1 -0
- package/dist/database/svg-input.js +77 -0
- package/dist/database/svg-input.js.map +1 -0
- package/dist/database/ui-sketch-session-repository.d.ts +19 -0
- package/dist/database/ui-sketch-session-repository.js +35 -0
- package/dist/database/ui-sketch-session-repository.js.map +1 -0
- package/dist/domain/canvas-layer-order.d.ts +6 -0
- package/dist/domain/canvas-layer-order.js +40 -0
- package/dist/domain/canvas-layer-order.js.map +1 -0
- package/dist/domain/canvas-node-metadata.d.ts +20 -0
- package/dist/domain/canvas-node-metadata.js +17 -0
- package/dist/domain/canvas-node-metadata.js.map +1 -0
- package/dist/domain/canvas-states.d.ts +8 -0
- package/dist/domain/canvas-states.js +23 -0
- package/dist/domain/canvas-states.js.map +1 -0
- package/dist/domain/composition/analysis.d.ts +104 -0
- package/dist/domain/composition/analysis.js +337 -0
- package/dist/domain/composition/analysis.js.map +1 -0
- package/dist/domain/composition/camera-reference.d.ts +24 -0
- package/dist/domain/composition/camera-reference.js +34 -0
- package/dist/domain/composition/camera-reference.js.map +1 -0
- package/dist/domain/composition/draft.d.ts +50 -0
- package/dist/domain/composition/draft.js +609 -0
- package/dist/domain/composition/draft.js.map +1 -0
- package/dist/domain/composition/frame.d.ts +23 -0
- package/dist/domain/composition/frame.js +154 -0
- package/dist/domain/composition/frame.js.map +1 -0
- package/dist/domain/composition/geometry.d.ts +15 -0
- package/dist/domain/composition/geometry.js +262 -0
- package/dist/domain/composition/geometry.js.map +1 -0
- package/dist/domain/composition/index.d.ts +13 -0
- package/dist/domain/composition/index.js +10 -0
- package/dist/domain/composition/index.js.map +1 -0
- package/dist/domain/composition/layers.d.ts +4 -0
- package/dist/domain/composition/layers.js +12 -0
- package/dist/domain/composition/layers.js.map +1 -0
- package/dist/domain/composition/records.d.ts +14 -0
- package/dist/domain/composition/records.js +2 -0
- package/dist/domain/composition/records.js.map +1 -0
- package/dist/domain/composition/refinement/engine.d.ts +12 -0
- package/dist/domain/composition/refinement/engine.js +521 -0
- package/dist/domain/composition/refinement/engine.js.map +1 -0
- package/dist/domain/composition/refinement/relations.d.ts +16 -0
- package/dist/domain/composition/refinement/relations.js +293 -0
- package/dist/domain/composition/refinement/relations.js.map +1 -0
- package/dist/domain/composition/refinement/types.d.ts +181 -0
- package/dist/domain/composition/refinement/types.js +2 -0
- package/dist/domain/composition/refinement/types.js.map +1 -0
- package/dist/domain/composition/render.d.ts +5 -0
- package/dist/domain/composition/render.js +169 -0
- package/dist/domain/composition/render.js.map +1 -0
- package/dist/domain/composition/states.d.ts +9 -0
- package/dist/domain/composition/states.js +104 -0
- package/dist/domain/composition/states.js.map +1 -0
- package/dist/domain/composition/types.d.ts +149 -0
- package/dist/domain/composition/types.js +2 -0
- package/dist/domain/composition/types.js.map +1 -0
- package/dist/domain/composition/workflow.d.ts +15 -0
- package/dist/domain/composition/workflow.js +77 -0
- package/dist/domain/composition/workflow.js.map +1 -0
- package/dist/domain/fingerprint.d.ts +2 -0
- package/dist/domain/fingerprint.js +25 -0
- package/dist/domain/fingerprint.js.map +1 -0
- package/dist/domain/session/canvas-edit-history.d.ts +17 -0
- package/dist/domain/session/canvas-edit-history.js +53 -0
- package/dist/domain/session/canvas-edit-history.js.map +1 -0
- package/dist/domain/session/capabilities.d.ts +16 -0
- package/dist/domain/session/capabilities.js +84 -0
- package/dist/domain/session/capabilities.js.map +1 -0
- package/dist/domain/session/draft-version.d.ts +41 -0
- package/dist/domain/session/draft-version.js +2 -0
- package/dist/domain/session/draft-version.js.map +1 -0
- package/dist/domain/session/index.d.ts +5 -0
- package/dist/domain/session/index.js +3 -0
- package/dist/domain/session/index.js.map +1 -0
- package/dist/domain/session/types.d.ts +23 -0
- package/dist/domain/session/types.js +2 -0
- package/dist/domain/session/types.js.map +1 -0
- package/dist/domain/spatial/assets/quaternius-female-rig.json +799 -0
- package/dist/domain/spatial/assets/quaternius-rig.json +799 -0
- package/dist/domain/spatial/assets/quaternius-superhero-female.json +1 -0
- package/dist/domain/spatial/assets/quaternius-superhero.json +1 -0
- package/dist/domain/spatial/camera-box.d.ts +13 -0
- package/dist/domain/spatial/camera-box.js +52 -0
- package/dist/domain/spatial/camera-box.js.map +1 -0
- package/dist/domain/spatial/geometric-model.d.ts +4 -0
- package/dist/domain/spatial/geometric-model.js +101 -0
- package/dist/domain/spatial/geometric-model.js.map +1 -0
- package/dist/domain/spatial/hands.d.ts +36 -0
- package/dist/domain/spatial/hands.js +128 -0
- package/dist/domain/spatial/hands.js.map +1 -0
- package/dist/domain/spatial/index.d.ts +30 -0
- package/dist/domain/spatial/index.js +381 -0
- package/dist/domain/spatial/index.js.map +1 -0
- package/dist/domain/spatial/kinematics.d.ts +27 -0
- package/dist/domain/spatial/kinematics.js +285 -0
- package/dist/domain/spatial/kinematics.js.map +1 -0
- package/dist/domain/spatial/lighting.d.ts +35 -0
- package/dist/domain/spatial/lighting.js +173 -0
- package/dist/domain/spatial/lighting.js.map +1 -0
- package/dist/domain/spatial/model.d.ts +5 -0
- package/dist/domain/spatial/model.js +193 -0
- package/dist/domain/spatial/model.js.map +1 -0
- package/dist/domain/spatial/morph.d.ts +3 -0
- package/dist/domain/spatial/morph.js +187 -0
- package/dist/domain/spatial/morph.js.map +1 -0
- package/dist/domain/spatial/proportions.d.ts +46 -0
- package/dist/domain/spatial/proportions.js +59 -0
- package/dist/domain/spatial/proportions.js.map +1 -0
- package/dist/domain/spatial/reference-lines.d.ts +6 -0
- package/dist/domain/spatial/reference-lines.js +58 -0
- package/dist/domain/spatial/reference-lines.js.map +1 -0
- package/dist/domain/spatial/scene-cache.d.ts +15 -0
- package/dist/domain/spatial/scene-cache.js +69 -0
- package/dist/domain/spatial/scene-cache.js.map +1 -0
- package/dist/domain/spatial/scene.d.ts +8 -0
- package/dist/domain/spatial/scene.js +69 -0
- package/dist/domain/spatial/scene.js.map +1 -0
- package/dist/domain/spatial/types.d.ts +187 -0
- package/dist/domain/spatial/types.js +5 -0
- package/dist/domain/spatial/types.js.map +1 -0
- package/dist/domain/style/index.d.ts +1 -0
- package/dist/domain/style/index.js +2 -0
- package/dist/domain/style/index.js.map +1 -0
- package/dist/domain/style/prompt-summary.d.ts +2 -0
- package/dist/domain/style/prompt-summary.js +11 -0
- package/dist/domain/style/prompt-summary.js.map +1 -0
- package/dist/domain/style/types.d.ts +32 -0
- package/dist/domain/style/types.js +3 -0
- package/dist/domain/style/types.js.map +1 -0
- package/dist/domain/ui-sketch/draft.d.ts +12 -0
- package/dist/domain/ui-sketch/draft.js +424 -0
- package/dist/domain/ui-sketch/draft.js.map +1 -0
- package/dist/domain/ui-sketch/geometry.d.ts +7 -0
- package/dist/domain/ui-sketch/geometry.js +11 -0
- package/dist/domain/ui-sketch/geometry.js.map +1 -0
- package/dist/domain/ui-sketch/groups.d.ts +5 -0
- package/dist/domain/ui-sketch/groups.js +40 -0
- package/dist/domain/ui-sketch/groups.js.map +1 -0
- package/dist/domain/ui-sketch/index.d.ts +8 -0
- package/dist/domain/ui-sketch/index.js +8 -0
- package/dist/domain/ui-sketch/index.js.map +1 -0
- package/dist/domain/ui-sketch/layers.d.ts +4 -0
- package/dist/domain/ui-sketch/layers.js +11 -0
- package/dist/domain/ui-sketch/layers.js.map +1 -0
- package/dist/domain/ui-sketch/render.d.ts +2 -0
- package/dist/domain/ui-sketch/render.js +58 -0
- package/dist/domain/ui-sketch/render.js.map +1 -0
- package/dist/domain/ui-sketch/standardize.d.ts +17 -0
- package/dist/domain/ui-sketch/standardize.js +139 -0
- package/dist/domain/ui-sketch/standardize.js.map +1 -0
- package/dist/domain/ui-sketch/states.d.ts +5 -0
- package/dist/domain/ui-sketch/states.js +21 -0
- package/dist/domain/ui-sketch/states.js.map +1 -0
- package/dist/domain/ui-sketch/types.d.ts +73 -0
- package/dist/domain/ui-sketch/types.js +2 -0
- package/dist/domain/ui-sketch/types.js.map +1 -0
- package/dist/server/app.d.ts +18 -0
- package/dist/server/app.js +108 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/image-content-type-parser.d.ts +2 -0
- package/dist/server/image-content-type-parser.js +5 -0
- package/dist/server/image-content-type-parser.js.map +1 -0
- package/dist/server/routes/composition-sessions.d.ts +3 -0
- package/dist/server/routes/composition-sessions.js +190 -0
- package/dist/server/routes/composition-sessions.js.map +1 -0
- package/dist/server/routes/draft-version-routes.d.ts +10 -0
- package/dist/server/routes/draft-version-routes.js +201 -0
- package/dist/server/routes/draft-version-routes.js.map +1 -0
- package/dist/server/routes/image-assets.d.ts +3 -0
- package/dist/server/routes/image-assets.js +114 -0
- package/dist/server/routes/image-assets.js.map +1 -0
- package/dist/server/routes/project-sessions.d.ts +48 -0
- package/dist/server/routes/project-sessions.js +305 -0
- package/dist/server/routes/project-sessions.js.map +1 -0
- package/dist/server/routes/spatial-sessions.d.ts +3 -0
- package/dist/server/routes/spatial-sessions.js +80 -0
- package/dist/server/routes/spatial-sessions.js.map +1 -0
- package/dist/server/routes/style-library.d.ts +3 -0
- package/dist/server/routes/style-library.js +308 -0
- package/dist/server/routes/style-library.js.map +1 -0
- package/dist/server/routes/ui-sketch-sessions.d.ts +3 -0
- package/dist/server/routes/ui-sketch-sessions.js +14 -0
- package/dist/server/routes/ui-sketch-sessions.js.map +1 -0
- package/dist/server/runtime.d.ts +30 -0
- package/dist/server/runtime.js +123 -0
- package/dist/server/runtime.js.map +1 -0
- package/dist/server/spatial-render.d.ts +5 -0
- package/dist/server/spatial-render.js +360 -0
- package/dist/server/spatial-render.js.map +1 -0
- package/dist/server/start.d.ts +1 -0
- package/dist/server/start.js +3 -0
- package/dist/server/start.js.map +1 -0
- package/licenses/THIRD-PARTY-NOTICES.txt +16664 -0
- package/licenses/YisiUI-LICENSE +21 -0
- package/locales/en/common.json +671 -0
- package/migrations/0001_projects_and_sessions.sql +45 -0
- package/migrations/0002_composition_versions_and_refinements.sql +26 -0
- package/migrations/0003_ui_sketch_draft_versions.sql +12 -0
- package/migrations/0004_image_assets.sql +16 -0
- package/migrations/0005_style_library.sql +31 -0
- package/migrations/0006_session_styles.sql +6 -0
- package/migrations/0007_svg_image_assets.sql +19 -0
- package/migrations/0008_spatial_spaces.sql +20 -0
- package/package.json +82 -0
- package/schemas/composition-draft.schema.json +234 -0
- package/schemas/composition-refinement-plan.schema.json +758 -0
- package/schemas/spatial-draft.schema.json +517 -0
- package/schemas/spatial-operations.schema.json +1082 -0
- package/schemas/ui-layout-standardization-plan.schema.json +29 -0
- package/schemas/ui-sketch-draft.schema.json +197 -0
- package/skills/human2ai/SKILL.md +149 -0
- package/skills/human2ai/agents/openai.yaml +3 -0
- package/skills/human2ai/references/composition-projection.md +170 -0
- package/skills/human2ai/references/composition.md +79 -0
- package/skills/human2ai/references/spatial.md +188 -0
- package/skills/human2ai/references/svg-images.md +27 -0
- package/skills/human2ai/references/ui-layout.md +100 -0
- package/web/out/404/index.html +1 -0
- package/web/out/404.html +1 -0
- package/web/out/__next.__PAGE__.txt +26 -0
- package/web/out/__next._full.txt +21 -0
- package/web/out/__next._tree.txt +4 -0
- package/web/out/_next/static/TV-jgcACg6HANZAMZTE2S/_buildManifest.js +1 -0
- package/web/out/_next/static/TV-jgcACg6HANZAMZTE2S/_ssgManifest.js +1 -0
- package/web/out/_next/static/chunks/130-9fadd0432daff55d.js +1 -0
- package/web/out/_next/static/chunks/158-eb00456e1bab68b3.js +52 -0
- package/web/out/_next/static/chunks/20-0801fc297cda2a7a.js +1 -0
- package/web/out/_next/static/chunks/248-d4a79649dae2a3f8.js +259 -0
- package/web/out/_next/static/chunks/678-1305cadf8254d814.js +1 -0
- package/web/out/_next/static/chunks/728-eb8b667f79229443.js +1 -0
- package/web/out/_next/static/chunks/83607670-bc1279370476e59f.js +1 -0
- package/web/out/_next/static/chunks/app/_global-error/page-5eece43b8152c414.js +1 -0
- package/web/out/_next/static/chunks/app/_not-found/page-c0cd75ac39fbf9cf.js +1 -0
- package/web/out/_next/static/chunks/app/composition/page-051ee2fabb12110a.js +1 -0
- package/web/out/_next/static/chunks/app/layout-745ca27ef8830f4f.js +1 -0
- package/web/out/_next/static/chunks/app/page-0027378a269a6168.js +1 -0
- package/web/out/_next/static/chunks/app/spatial/page-266dedc81784d4f6.js +1 -0
- package/web/out/_next/static/chunks/app/styles/page-d5cb83af828ea9ed.js +1 -0
- package/web/out/_next/static/chunks/app/ui-sketch/page-2a8436e05a05c618.js +1 -0
- package/web/out/_next/static/chunks/c3f2cda1-9e279dab137b7272.js +342 -0
- package/web/out/_next/static/chunks/c7879cf7-7873c8afd9c9c666.js +1 -0
- package/web/out/_next/static/chunks/framework-6eacf80ec1e4c887.js +1 -0
- package/web/out/_next/static/chunks/main-5ee8fd93319f955c.js +5 -0
- package/web/out/_next/static/chunks/main-app-0cf10803ab17c700.js +1 -0
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/app-error-5eece43b8152c414.js +1 -0
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/forbidden-5eece43b8152c414.js +1 -0
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-728204b7cccc4ed2.js +1 -0
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/not-found-5eece43b8152c414.js +1 -0
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/unauthorized-5eece43b8152c414.js +1 -0
- package/web/out/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/web/out/_next/static/chunks/webpack-97ae63c0e0b2a512.js +1 -0
- package/web/out/_next/static/css/3b7982b41ed8eccd.css +4 -0
- package/web/out/_next/static/css/81ae71f1d3e9a866.css +1 -0
- package/web/out/_next/static/css/8c3843f4951fa9f6.css +5 -0
- package/web/out/_next/static/css/c739d0131cdcc891.css +1 -0
- package/web/out/_next/static/css/ce1b4bb3ad3c6073.css +1 -0
- package/web/out/_next/static/css/db96ae2e88545d96.css +1 -0
- package/web/out/_not-found/__next._full.txt +18 -0
- package/web/out/_not-found/__next._not-found.__PAGE__.txt +24 -0
- package/web/out/_not-found/__next._tree.txt +3 -0
- package/web/out/_not-found/index.html +1 -0
- package/web/out/_not-found/index.txt +18 -0
- package/web/out/composition/__next._full.txt +25 -0
- package/web/out/composition/__next._tree.txt +6 -0
- package/web/out/composition/__next.composition.__PAGE__.txt +31 -0
- package/web/out/composition/index.html +1 -0
- package/web/out/composition/index.txt +25 -0
- package/web/out/index.html +1 -0
- package/web/out/index.txt +21 -0
- package/web/out/spatial/__next._full.txt +23 -0
- package/web/out/spatial/__next._tree.txt +4 -0
- package/web/out/spatial/__next.spatial.__PAGE__.txt +29 -0
- package/web/out/spatial/index.html +1 -0
- package/web/out/spatial/index.txt +23 -0
- package/web/out/styles/__next._full.txt +23 -0
- package/web/out/styles/__next._tree.txt +4 -0
- package/web/out/styles/__next.styles.__PAGE__.txt +29 -0
- package/web/out/styles/index.html +1 -0
- package/web/out/styles/index.txt +23 -0
- package/web/out/ui-sketch/__next._full.txt +25 -0
- package/web/out/ui-sketch/__next._tree.txt +6 -0
- package/web/out/ui-sketch/__next.ui-sketch.__PAGE__.txt +31 -0
- package/web/out/ui-sketch/index.html +1 -0
- package/web/out/ui-sketch/index.txt +25 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type IntegrationMode = "copy" | "link";
|
|
2
|
+
export interface IntegrationManifest {
|
|
3
|
+
schemaVersion: 1;
|
|
4
|
+
agent: "codex";
|
|
5
|
+
sourceRoot: string;
|
|
6
|
+
runner: string[];
|
|
7
|
+
service: {
|
|
8
|
+
apiUrl: string;
|
|
9
|
+
start: string[];
|
|
10
|
+
webUrl: string;
|
|
11
|
+
};
|
|
12
|
+
skill: {
|
|
13
|
+
name: "human2ai";
|
|
14
|
+
mode: IntegrationMode;
|
|
15
|
+
target: ".agents/skills/human2ai";
|
|
16
|
+
sourceDigest: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface IntegrationCommandOptions {
|
|
20
|
+
agent?: string;
|
|
21
|
+
check?: boolean;
|
|
22
|
+
mode?: string;
|
|
23
|
+
root?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface IntegrationContext {
|
|
26
|
+
apiUrl: string;
|
|
27
|
+
sourceRoot?: string;
|
|
28
|
+
startDirectory?: string;
|
|
29
|
+
webUrl: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class CliIntegrationError extends Error {
|
|
32
|
+
readonly code: string;
|
|
33
|
+
readonly details: Record<string, unknown>;
|
|
34
|
+
constructor(code: string, message: string, details?: Record<string, unknown>);
|
|
35
|
+
}
|
|
36
|
+
export declare function executeIntegrationCommand(command: string | undefined, options: IntegrationCommandOptions, context: IntegrationContext): Promise<unknown>;
|
|
37
|
+
export declare function readIntegrationManifestSync(startDirectory?: string): IntegrationManifest | null;
|
|
38
|
+
export declare function integrationStartDirectory(explicitDirectory?: string): string;
|
|
39
|
+
export declare function integrationUsage(): string;
|
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
import { cp, lstat, mkdir, readdir, readFile, readlink, realpath, rename, rm, stat, symlink, writeFile, } from "node:fs/promises";
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
const INTEGRATION_CONFIG = path.join(".human2ai", "integration.json");
|
|
7
|
+
const INTEGRATION_IGNORE = path.join(".human2ai", ".gitignore");
|
|
8
|
+
const SKILL_TARGET = path.join(".agents", "skills", "human2ai");
|
|
9
|
+
export class CliIntegrationError extends Error {
|
|
10
|
+
code;
|
|
11
|
+
details;
|
|
12
|
+
constructor(code, message, details = {}) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.code = code;
|
|
15
|
+
this.details = details;
|
|
16
|
+
this.name = "CliIntegrationError";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export async function executeIntegrationCommand(command, options, context) {
|
|
20
|
+
const root = await requireProjectRoot(options.root ?? integrationStartDirectory(context.startDirectory));
|
|
21
|
+
const sourceRoot = await resolveSourceRoot(context.sourceRoot);
|
|
22
|
+
if (command === "install") {
|
|
23
|
+
const agent = options.agent ?? "codex";
|
|
24
|
+
if (agent !== "codex") {
|
|
25
|
+
throw new CliIntegrationError("UNSUPPORTED_AGENT", `Unsupported integration agent: ${agent}.`, { supportedAgents: ["codex"] });
|
|
26
|
+
}
|
|
27
|
+
const mode = parseMode(options.mode ?? "copy");
|
|
28
|
+
return installIntegration(root, sourceRoot, mode, context);
|
|
29
|
+
}
|
|
30
|
+
if (command === "sync") {
|
|
31
|
+
return syncIntegration(root, sourceRoot, options.check === true);
|
|
32
|
+
}
|
|
33
|
+
if (command === "doctor") {
|
|
34
|
+
return diagnoseIntegration(root, sourceRoot);
|
|
35
|
+
}
|
|
36
|
+
throw new Error(integrationUsage());
|
|
37
|
+
}
|
|
38
|
+
export function readIntegrationManifestSync(startDirectory = integrationStartDirectory()) {
|
|
39
|
+
let directory = path.resolve(startDirectory);
|
|
40
|
+
while (true) {
|
|
41
|
+
const configPath = path.join(directory, INTEGRATION_CONFIG);
|
|
42
|
+
if (existsSync(configPath)) {
|
|
43
|
+
try {
|
|
44
|
+
return parseManifest(JSON.parse(readFileSync(configPath, "utf8")), configPath);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error instanceof CliIntegrationError)
|
|
48
|
+
throw error;
|
|
49
|
+
throw invalidConfig(configPath, error);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const parent = path.dirname(directory);
|
|
53
|
+
if (parent === directory || existsSync(path.join(directory, ".git")))
|
|
54
|
+
return null;
|
|
55
|
+
directory = parent;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function integrationStartDirectory(explicitDirectory) {
|
|
59
|
+
return path.resolve(explicitDirectory
|
|
60
|
+
?? process.env.HUMAN2AI_INTEGRATION_ROOT
|
|
61
|
+
?? process.env.INIT_CWD
|
|
62
|
+
?? process.cwd());
|
|
63
|
+
}
|
|
64
|
+
export function integrationUsage() {
|
|
65
|
+
return [
|
|
66
|
+
"Integration usage:",
|
|
67
|
+
" human2ai integration install [--agent codex] [--root <path>] [--mode copy|link]",
|
|
68
|
+
" human2ai integration sync [--root <path>] [--check]",
|
|
69
|
+
" human2ai integration doctor [--root <path>]",
|
|
70
|
+
].join("\n");
|
|
71
|
+
}
|
|
72
|
+
async function installIntegration(root, sourceRoot, mode, context) {
|
|
73
|
+
const configPath = path.join(root, INTEGRATION_CONFIG);
|
|
74
|
+
const targetPath = path.join(root, SKILL_TARGET);
|
|
75
|
+
const sourcePath = skillSourcePath(sourceRoot);
|
|
76
|
+
const sourceDigest = await hashDirectory(sourcePath);
|
|
77
|
+
const existing = await readManifest(configPath, false);
|
|
78
|
+
if (existing) {
|
|
79
|
+
assertSameSource(existing, sourceRoot);
|
|
80
|
+
assertManifestRunners(existing, sourceRoot);
|
|
81
|
+
if (existing.skill.mode !== mode) {
|
|
82
|
+
throw new CliIntegrationError("INTEGRATION_CONFLICT", `Human2AI is already installed in ${existing.skill.mode} mode.`, { configPath, installedMode: existing.skill.mode, requestedMode: mode });
|
|
83
|
+
}
|
|
84
|
+
await assertManagedTarget(existing, root);
|
|
85
|
+
return integrationResult("integration-install", existing.skill.sourceDigest === sourceDigest ? "already-installed" : "update-available", root, existing, false, sourceDigest);
|
|
86
|
+
}
|
|
87
|
+
if (await pathExists(targetPath)) {
|
|
88
|
+
throw new CliIntegrationError("INTEGRATION_CONFLICT", `Refusing to overwrite unmanaged Skill at ${targetPath}.`, { targetPath });
|
|
89
|
+
}
|
|
90
|
+
const manifest = {
|
|
91
|
+
schemaVersion: 1,
|
|
92
|
+
agent: "codex",
|
|
93
|
+
sourceRoot,
|
|
94
|
+
runner: localRunner(sourceRoot),
|
|
95
|
+
service: {
|
|
96
|
+
apiUrl: context.apiUrl,
|
|
97
|
+
start: localServiceRunner(sourceRoot),
|
|
98
|
+
webUrl: context.webUrl,
|
|
99
|
+
},
|
|
100
|
+
skill: {
|
|
101
|
+
name: "human2ai",
|
|
102
|
+
mode,
|
|
103
|
+
target: ".agents/skills/human2ai",
|
|
104
|
+
sourceDigest,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
await mkdir(path.dirname(targetPath), { recursive: true });
|
|
108
|
+
if (mode === "copy") {
|
|
109
|
+
await cp(sourcePath, targetPath, {
|
|
110
|
+
recursive: true,
|
|
111
|
+
errorOnExist: true,
|
|
112
|
+
force: false,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
await symlink(sourcePath, targetPath, "dir");
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
await ensureIntegrationConfigIgnored(root);
|
|
120
|
+
await writeManifest(configPath, manifest);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
await rm(targetPath, { recursive: true, force: true });
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
return integrationResult("integration-install", "installed", root, manifest, true, sourceDigest);
|
|
127
|
+
}
|
|
128
|
+
async function syncIntegration(root, sourceRoot, check) {
|
|
129
|
+
const configPath = path.join(root, INTEGRATION_CONFIG);
|
|
130
|
+
const manifest = await requireManifest(configPath);
|
|
131
|
+
assertSameSource(manifest, sourceRoot);
|
|
132
|
+
assertManifestRunners(manifest, sourceRoot);
|
|
133
|
+
await assertManagedTarget(manifest, root);
|
|
134
|
+
const sourceDigest = await hashDirectory(skillSourcePath(sourceRoot));
|
|
135
|
+
if (manifest.skill.mode === "link") {
|
|
136
|
+
if (!check && manifest.skill.sourceDigest !== sourceDigest) {
|
|
137
|
+
const updated = withSourceDigest(manifest, sourceDigest);
|
|
138
|
+
await writeManifest(configPath, updated);
|
|
139
|
+
return integrationResult("integration-sync", "metadata-updated", root, updated, true, sourceDigest);
|
|
140
|
+
}
|
|
141
|
+
return integrationResult("integration-sync", "current", root, manifest, false, sourceDigest);
|
|
142
|
+
}
|
|
143
|
+
if (manifest.skill.sourceDigest === sourceDigest) {
|
|
144
|
+
return integrationResult("integration-sync", "current", root, manifest, false, sourceDigest);
|
|
145
|
+
}
|
|
146
|
+
if (check) {
|
|
147
|
+
return integrationResult("integration-sync", "update-available", root, manifest, false, sourceDigest);
|
|
148
|
+
}
|
|
149
|
+
const targetPath = path.join(root, manifest.skill.target);
|
|
150
|
+
await replaceDirectory(skillSourcePath(sourceRoot), targetPath);
|
|
151
|
+
const updated = withSourceDigest(manifest, sourceDigest);
|
|
152
|
+
await writeManifest(configPath, updated);
|
|
153
|
+
return integrationResult("integration-sync", "updated", root, updated, true, sourceDigest);
|
|
154
|
+
}
|
|
155
|
+
async function diagnoseIntegration(root, sourceRoot) {
|
|
156
|
+
const configPath = path.join(root, INTEGRATION_CONFIG);
|
|
157
|
+
const manifest = await requireManifest(configPath);
|
|
158
|
+
assertSameSource(manifest, sourceRoot);
|
|
159
|
+
assertManifestRunners(manifest, sourceRoot);
|
|
160
|
+
await assertManagedTarget(manifest, root);
|
|
161
|
+
const sourceDigest = await hashDirectory(skillSourcePath(sourceRoot));
|
|
162
|
+
const updateAvailable = manifest.skill.mode === "copy"
|
|
163
|
+
&& manifest.skill.sourceDigest !== sourceDigest;
|
|
164
|
+
return {
|
|
165
|
+
version: 1,
|
|
166
|
+
kind: "integration-doctor",
|
|
167
|
+
status: updateAvailable ? "update-available" : "ready",
|
|
168
|
+
root,
|
|
169
|
+
configPath,
|
|
170
|
+
sourceRoot,
|
|
171
|
+
runner: manifest.runner,
|
|
172
|
+
service: manifest.service,
|
|
173
|
+
skill: {
|
|
174
|
+
...manifest.skill,
|
|
175
|
+
targetPath: path.join(root, manifest.skill.target),
|
|
176
|
+
currentSourceDigest: sourceDigest,
|
|
177
|
+
updateAvailable,
|
|
178
|
+
},
|
|
179
|
+
checks: [
|
|
180
|
+
{ id: "integration.config@1", status: "passed" },
|
|
181
|
+
{ id: "integration.source@1", status: "passed" },
|
|
182
|
+
{ id: "integration.runner@1", status: "passed" },
|
|
183
|
+
{ id: "integration.skill@1", status: "passed" },
|
|
184
|
+
],
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
async function assertManagedTarget(manifest, root) {
|
|
188
|
+
const targetPath = path.join(root, manifest.skill.target);
|
|
189
|
+
let targetStat;
|
|
190
|
+
try {
|
|
191
|
+
targetStat = await lstat(targetPath);
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
if (isNotFound(error)) {
|
|
195
|
+
throw new CliIntegrationError("INTEGRATION_CONFLICT", `Managed Human2AI Skill is missing at ${targetPath}.`, { targetPath });
|
|
196
|
+
}
|
|
197
|
+
throw error;
|
|
198
|
+
}
|
|
199
|
+
if (manifest.skill.mode === "link") {
|
|
200
|
+
if (!targetStat.isSymbolicLink()) {
|
|
201
|
+
throw new CliIntegrationError("INTEGRATION_CONFLICT", `Managed Human2AI Skill at ${targetPath} is no longer a symbolic link.`, { targetPath });
|
|
202
|
+
}
|
|
203
|
+
const linkedPath = path.resolve(path.dirname(targetPath), await readlink(targetPath));
|
|
204
|
+
const expectedPath = skillSourcePath(manifest.sourceRoot);
|
|
205
|
+
if (await realpath(linkedPath) !== await realpath(expectedPath)) {
|
|
206
|
+
throw new CliIntegrationError("INTEGRATION_CONFLICT", `Managed Human2AI Skill link at ${targetPath} points to a different source.`, { targetPath, expectedPath, linkedPath });
|
|
207
|
+
}
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
if (!targetStat.isDirectory() || targetStat.isSymbolicLink()) {
|
|
211
|
+
throw new CliIntegrationError("INTEGRATION_CONFLICT", `Managed Human2AI Skill at ${targetPath} is not a copied directory.`, { targetPath });
|
|
212
|
+
}
|
|
213
|
+
const installedDigest = await hashDirectory(targetPath);
|
|
214
|
+
if (installedDigest !== manifest.skill.sourceDigest) {
|
|
215
|
+
throw new CliIntegrationError("INTEGRATION_CONFLICT", "The copied Human2AI Skill was modified in the consumer project; refusing to overwrite it.", {
|
|
216
|
+
targetPath,
|
|
217
|
+
expectedDigest: manifest.skill.sourceDigest,
|
|
218
|
+
installedDigest,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async function replaceDirectory(sourcePath, targetPath) {
|
|
223
|
+
const parent = path.dirname(targetPath);
|
|
224
|
+
const stagingPath = path.join(parent, `.human2ai-stage-${randomUUID()}`);
|
|
225
|
+
const backupPath = path.join(parent, `.human2ai-backup-${randomUUID()}`);
|
|
226
|
+
await cp(sourcePath, stagingPath, {
|
|
227
|
+
recursive: true,
|
|
228
|
+
errorOnExist: true,
|
|
229
|
+
force: false,
|
|
230
|
+
});
|
|
231
|
+
await rename(targetPath, backupPath);
|
|
232
|
+
try {
|
|
233
|
+
await rename(stagingPath, targetPath);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
await rename(backupPath, targetPath);
|
|
237
|
+
await rm(stagingPath, { recursive: true, force: true });
|
|
238
|
+
throw error;
|
|
239
|
+
}
|
|
240
|
+
await rm(backupPath, { recursive: true, force: true });
|
|
241
|
+
}
|
|
242
|
+
async function hashDirectory(directory) {
|
|
243
|
+
const directoryStat = await stat(directory);
|
|
244
|
+
if (!directoryStat.isDirectory()) {
|
|
245
|
+
throw new CliIntegrationError("INTEGRATION_SOURCE_INVALID", `Human2AI Skill source is not a directory: ${directory}.`, { directory });
|
|
246
|
+
}
|
|
247
|
+
const hash = createHash("sha256");
|
|
248
|
+
await hashDirectoryEntries(directory, directory, hash);
|
|
249
|
+
return `sha256:${hash.digest("hex")}`;
|
|
250
|
+
}
|
|
251
|
+
async function hashDirectoryEntries(root, directory, hash) {
|
|
252
|
+
const entries = await readdir(directory, { withFileTypes: true });
|
|
253
|
+
entries.sort((left, right) => left.name.localeCompare(right.name));
|
|
254
|
+
for (const entry of entries) {
|
|
255
|
+
const filename = path.join(directory, entry.name);
|
|
256
|
+
const relative = path.relative(root, filename).split(path.sep).join("/");
|
|
257
|
+
if (entry.isDirectory()) {
|
|
258
|
+
hash.update(`directory\0${relative}\0`);
|
|
259
|
+
await hashDirectoryEntries(root, filename, hash);
|
|
260
|
+
}
|
|
261
|
+
else if (entry.isFile()) {
|
|
262
|
+
hash.update(`file\0${relative}\0`);
|
|
263
|
+
hash.update(await readFile(filename));
|
|
264
|
+
hash.update("\0");
|
|
265
|
+
}
|
|
266
|
+
else if (entry.isSymbolicLink()) {
|
|
267
|
+
hash.update(`link\0${relative}\0${await readlink(filename)}\0`);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
throw new CliIntegrationError("INTEGRATION_SOURCE_INVALID", `Unsupported file type in Human2AI Skill: ${filename}.`, { filename });
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
async function resolveSourceRoot(explicitRoot) {
|
|
275
|
+
const root = path.resolve(explicitRoot
|
|
276
|
+
?? path.join(path.dirname(fileURLToPath(import.meta.url)), "..", ".."));
|
|
277
|
+
try {
|
|
278
|
+
const resolved = await realpath(root);
|
|
279
|
+
await hashDirectory(skillSourcePath(resolved));
|
|
280
|
+
return resolved;
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
if (error instanceof CliIntegrationError)
|
|
284
|
+
throw error;
|
|
285
|
+
throw new CliIntegrationError("INTEGRATION_SOURCE_INVALID", `Cannot read the local Human2AI source at ${root}.`, { sourceRoot: root });
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
async function requireProjectRoot(root) {
|
|
289
|
+
const resolved = path.resolve(root);
|
|
290
|
+
try {
|
|
291
|
+
if (!(await stat(resolved)).isDirectory())
|
|
292
|
+
throw new Error("not a directory");
|
|
293
|
+
return await realpath(resolved);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
throw new CliIntegrationError("INTEGRATION_ROOT_INVALID", `Consumer project root is not a directory: ${resolved}.`, { root: resolved });
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
async function readManifest(configPath, required) {
|
|
300
|
+
try {
|
|
301
|
+
return parseManifest(JSON.parse(await readFile(configPath, "utf8")), configPath);
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
if (isNotFound(error) && !required)
|
|
305
|
+
return null;
|
|
306
|
+
if (isNotFound(error)) {
|
|
307
|
+
throw new CliIntegrationError("INTEGRATION_NOT_INSTALLED", `Human2AI integration is not installed at ${path.dirname(configPath)}.`, { configPath });
|
|
308
|
+
}
|
|
309
|
+
if (error instanceof CliIntegrationError)
|
|
310
|
+
throw error;
|
|
311
|
+
throw invalidConfig(configPath, error);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
async function requireManifest(configPath) {
|
|
315
|
+
const manifest = await readManifest(configPath, true);
|
|
316
|
+
if (!manifest)
|
|
317
|
+
throw new Error("unreachable");
|
|
318
|
+
return manifest;
|
|
319
|
+
}
|
|
320
|
+
function parseManifest(input, configPath) {
|
|
321
|
+
if (!isRecord(input))
|
|
322
|
+
throw invalidConfig(configPath, "not an object");
|
|
323
|
+
const service = input.service;
|
|
324
|
+
const skill = input.skill;
|
|
325
|
+
if (input.schemaVersion !== 1
|
|
326
|
+
|| input.agent !== "codex"
|
|
327
|
+
|| typeof input.sourceRoot !== "string"
|
|
328
|
+
|| !path.isAbsolute(input.sourceRoot)
|
|
329
|
+
|| !Array.isArray(input.runner)
|
|
330
|
+
|| input.runner.length === 0
|
|
331
|
+
|| input.runner.some((part) => typeof part !== "string" || part.length === 0)
|
|
332
|
+
|| !isRecord(service)
|
|
333
|
+
|| !isHttpUrl(service.apiUrl)
|
|
334
|
+
|| !Array.isArray(service.start)
|
|
335
|
+
|| service.start.length === 0
|
|
336
|
+
|| service.start.some((part) => typeof part !== "string" || part.length === 0)
|
|
337
|
+
|| !isHttpUrl(service.webUrl)
|
|
338
|
+
|| !isRecord(skill)
|
|
339
|
+
|| skill.name !== "human2ai"
|
|
340
|
+
|| (skill.mode !== "copy" && skill.mode !== "link")
|
|
341
|
+
|| skill.target !== ".agents/skills/human2ai"
|
|
342
|
+
|| typeof skill.sourceDigest !== "string"
|
|
343
|
+
|| !/^sha256:[0-9a-f]{64}$/.test(skill.sourceDigest)) {
|
|
344
|
+
throw invalidConfig(configPath, "schema validation failed");
|
|
345
|
+
}
|
|
346
|
+
return input;
|
|
347
|
+
}
|
|
348
|
+
async function writeManifest(configPath, manifest) {
|
|
349
|
+
await mkdir(path.dirname(configPath), { recursive: true });
|
|
350
|
+
const temporaryPath = `${configPath}.${randomUUID()}.tmp`;
|
|
351
|
+
await writeFile(temporaryPath, `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
|
|
352
|
+
await rename(temporaryPath, configPath);
|
|
353
|
+
}
|
|
354
|
+
async function ensureIntegrationConfigIgnored(root) {
|
|
355
|
+
const ignorePath = path.join(root, INTEGRATION_IGNORE);
|
|
356
|
+
let current = "";
|
|
357
|
+
try {
|
|
358
|
+
current = await readFile(ignorePath, "utf8");
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
if (!isNotFound(error))
|
|
362
|
+
throw error;
|
|
363
|
+
}
|
|
364
|
+
const patterns = current.split(/\r?\n/).map((line) => line.trim());
|
|
365
|
+
if (patterns.includes("integration.json") || patterns.includes("/integration.json")) {
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
const prefix = current.length === 0 || current.endsWith("\n") ? current : `${current}\n`;
|
|
369
|
+
await mkdir(path.dirname(ignorePath), { recursive: true });
|
|
370
|
+
await writeFile(ignorePath, `${prefix}integration.json\n`, "utf8");
|
|
371
|
+
}
|
|
372
|
+
function invalidConfig(configPath, reason) {
|
|
373
|
+
return new CliIntegrationError("INTEGRATION_CONFIG_INVALID", `Invalid Human2AI integration config at ${configPath}: ${errorMessage(reason)}.`, { configPath });
|
|
374
|
+
}
|
|
375
|
+
function assertSameSource(manifest, sourceRoot) {
|
|
376
|
+
if (path.resolve(manifest.sourceRoot) !== path.resolve(sourceRoot)) {
|
|
377
|
+
throw new CliIntegrationError("INTEGRATION_SOURCE_MISMATCH", "This consumer project is managed by a different local Human2AI source.", { installedSourceRoot: manifest.sourceRoot, currentSourceRoot: sourceRoot });
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
function assertManifestRunners(manifest, sourceRoot) {
|
|
381
|
+
const expectedRunner = localRunner(sourceRoot);
|
|
382
|
+
const expectedServiceStart = localServiceRunner(sourceRoot);
|
|
383
|
+
if (!arraysEqual(manifest.runner, expectedRunner)
|
|
384
|
+
|| !arraysEqual(manifest.service.start, expectedServiceStart)) {
|
|
385
|
+
throw new CliIntegrationError("INTEGRATION_CONFIG_INVALID", "Human2AI integration runner does not match the recorded local source.", {
|
|
386
|
+
configuredRunner: manifest.runner,
|
|
387
|
+
expectedRunner,
|
|
388
|
+
configuredServiceStart: manifest.service.start,
|
|
389
|
+
expectedServiceStart,
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
function withSourceDigest(manifest, sourceDigest) {
|
|
394
|
+
return {
|
|
395
|
+
...manifest,
|
|
396
|
+
skill: { ...manifest.skill, sourceDigest },
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
function integrationResult(kind, status, root, manifest, changed, sourceDigest) {
|
|
400
|
+
return {
|
|
401
|
+
version: 1,
|
|
402
|
+
kind,
|
|
403
|
+
status,
|
|
404
|
+
changed,
|
|
405
|
+
root,
|
|
406
|
+
configPath: path.join(root, INTEGRATION_CONFIG),
|
|
407
|
+
ignorePath: path.join(root, INTEGRATION_IGNORE),
|
|
408
|
+
sourceRoot: manifest.sourceRoot,
|
|
409
|
+
runner: manifest.runner,
|
|
410
|
+
service: manifest.service,
|
|
411
|
+
skill: {
|
|
412
|
+
...manifest.skill,
|
|
413
|
+
targetPath: path.join(root, manifest.skill.target),
|
|
414
|
+
currentSourceDigest: sourceDigest,
|
|
415
|
+
},
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
function skillSourcePath(sourceRoot) {
|
|
419
|
+
return path.join(sourceRoot, "skills", "human2ai");
|
|
420
|
+
}
|
|
421
|
+
function localRunner(sourceRoot) {
|
|
422
|
+
const compiledCli = path.join(sourceRoot, "dist", "cli", "main.js");
|
|
423
|
+
if (existsSync(compiledCli))
|
|
424
|
+
return ["node", compiledCli];
|
|
425
|
+
throw new CliIntegrationError("INTEGRATION_SOURCE_INVALID", `Built Human2AI CLI is missing under ${sourceRoot}. Run npm run build first.`, { sourceRoot });
|
|
426
|
+
}
|
|
427
|
+
function localServiceRunner(sourceRoot) {
|
|
428
|
+
return [...localRunner(sourceRoot), "web"];
|
|
429
|
+
}
|
|
430
|
+
function parseMode(mode) {
|
|
431
|
+
if (mode === "copy" || mode === "link")
|
|
432
|
+
return mode;
|
|
433
|
+
throw new CliIntegrationError("INVALID_INTEGRATION_MODE", `Unsupported integration mode: ${mode}.`, { supportedModes: ["copy", "link"] });
|
|
434
|
+
}
|
|
435
|
+
function isRecord(value) {
|
|
436
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
437
|
+
}
|
|
438
|
+
function arraysEqual(left, right) {
|
|
439
|
+
return left.length === right.length
|
|
440
|
+
&& left.every((value, index) => value === right[index]);
|
|
441
|
+
}
|
|
442
|
+
function isHttpUrl(value) {
|
|
443
|
+
if (typeof value !== "string")
|
|
444
|
+
return false;
|
|
445
|
+
try {
|
|
446
|
+
const url = new URL(value);
|
|
447
|
+
return url.protocol === "http:" || url.protocol === "https:";
|
|
448
|
+
}
|
|
449
|
+
catch {
|
|
450
|
+
return false;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
function pathExists(filename) {
|
|
454
|
+
return lstat(filename).then(() => true, (error) => {
|
|
455
|
+
if (isNotFound(error))
|
|
456
|
+
return false;
|
|
457
|
+
throw error;
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
function isNotFound(error) {
|
|
461
|
+
return isRecord(error) && error.code === "ENOENT";
|
|
462
|
+
}
|
|
463
|
+
function errorMessage(error) {
|
|
464
|
+
return error instanceof Error ? error.message : String(error);
|
|
465
|
+
}
|
|
466
|
+
//# sourceMappingURL=integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/cli/integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export interface CliDependencies {
|
|
3
|
+
cwd?: string;
|
|
4
|
+
fetch?: typeof fetch;
|
|
5
|
+
integrationSourceRoot?: string;
|
|
6
|
+
openUrl?: (url: string) => Promise<void>;
|
|
7
|
+
serviceUrl?: string;
|
|
8
|
+
webUrl?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class CliServiceError extends Error {
|
|
11
|
+
readonly code: string;
|
|
12
|
+
readonly status: number | null;
|
|
13
|
+
readonly details: Record<string, unknown>;
|
|
14
|
+
constructor(code: string, message: string, status: number | null, details?: Record<string, unknown>);
|
|
15
|
+
}
|
|
16
|
+
export declare function executeCli(args: string[], dependencies?: CliDependencies): Promise<unknown>;
|
|
17
|
+
export declare function isMainModule(entryPath?: string): boolean;
|