@loxtep/sdk 0.8.0 → 0.9.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.
- package/CHANGELOG.md +51 -0
- package/README.md +2 -1
- package/dist/cli/commands/approvals-cmd.d.ts +21 -0
- package/dist/cli/commands/approvals-cmd.d.ts.map +1 -0
- package/dist/cli/commands/approvals-cmd.js +95 -0
- package/dist/cli/commands/approvals-cmd.js.map +1 -0
- package/dist/cli/commands/clone-cmd.d.ts +39 -0
- package/dist/cli/commands/clone-cmd.d.ts.map +1 -0
- package/dist/cli/commands/clone-cmd.js +291 -0
- package/dist/cli/commands/clone-cmd.js.map +1 -0
- package/dist/cli/commands/deploy-cmd.d.ts.map +1 -1
- package/dist/cli/commands/deploy-cmd.js +52 -19
- package/dist/cli/commands/deploy-cmd.js.map +1 -1
- package/dist/cli/commands/deployments-cmd.d.ts +22 -0
- package/dist/cli/commands/deployments-cmd.d.ts.map +1 -0
- package/dist/cli/commands/deployments-cmd.js +62 -0
- package/dist/cli/commands/deployments-cmd.js.map +1 -0
- package/dist/cli/commands/init-cmd.d.ts.map +1 -1
- package/dist/cli/commands/init-cmd.js +12 -1
- package/dist/cli/commands/init-cmd.js.map +1 -1
- package/dist/cli/commands/link-cmd.d.ts +33 -0
- package/dist/cli/commands/link-cmd.d.ts.map +1 -0
- package/dist/cli/commands/link-cmd.js +145 -0
- package/dist/cli/commands/link-cmd.js.map +1 -0
- package/dist/cli/commands/projects-cmd.d.ts +39 -1
- package/dist/cli/commands/projects-cmd.d.ts.map +1 -1
- package/dist/cli/commands/projects-cmd.js +231 -4
- package/dist/cli/commands/projects-cmd.js.map +1 -1
- package/dist/cli/commands/projects-github-cmd.d.ts +24 -0
- package/dist/cli/commands/projects-github-cmd.d.ts.map +1 -0
- package/dist/cli/commands/projects-github-cmd.js +108 -0
- package/dist/cli/commands/projects-github-cmd.js.map +1 -0
- package/dist/cli/commands/push-cmd.d.ts +3 -7
- package/dist/cli/commands/push-cmd.d.ts.map +1 -1
- package/dist/cli/commands/push-cmd.js +10 -39
- package/dist/cli/commands/push-cmd.js.map +1 -1
- package/dist/cli/commands/status-cmd.d.ts +21 -0
- package/dist/cli/commands/status-cmd.d.ts.map +1 -0
- package/dist/cli/commands/status-cmd.js +127 -0
- package/dist/cli/commands/status-cmd.js.map +1 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +21 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js +158 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/known-locals-registry.d.ts +51 -0
- package/dist/cli/known-locals-registry.d.ts.map +1 -0
- package/dist/cli/known-locals-registry.js +94 -0
- package/dist/cli/known-locals-registry.js.map +1 -0
- package/dist/cli/project-context.d.ts +9 -0
- package/dist/cli/project-context.d.ts.map +1 -1
- package/dist/cli/project-context.js +21 -0
- package/dist/cli/project-context.js.map +1 -1
- package/dist/client/deployments-types.d.ts +51 -0
- package/dist/client/deployments-types.d.ts.map +1 -0
- package/dist/client/deployments-types.js +6 -0
- package/dist/client/deployments-types.js.map +1 -0
- package/dist/client/deployments.d.ts +20 -0
- package/dist/client/deployments.d.ts.map +1 -0
- package/dist/client/deployments.js +71 -0
- package/dist/client/deployments.js.map +1 -0
- package/dist/client/index.d.ts +11 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/loxtep-client.d.ts.map +1 -1
- package/dist/client/loxtep-client.js +12 -2
- package/dist/client/loxtep-client.js.map +1 -1
- package/dist/client/observe-facade.d.ts +5 -1
- package/dist/client/observe-facade.d.ts.map +1 -1
- package/dist/client/observe-facade.js +3 -1
- package/dist/client/observe-facade.js.map +1 -1
- package/dist/client/project-workspace-inventory.d.ts +61 -0
- package/dist/client/project-workspace-inventory.d.ts.map +1 -0
- package/dist/client/project-workspace-inventory.js +300 -0
- package/dist/client/project-workspace-inventory.js.map +1 -0
- package/dist/client/project-workspace-status-types.d.ts +644 -0
- package/dist/client/project-workspace-status-types.d.ts.map +1 -0
- package/dist/client/project-workspace-status-types.js +265 -0
- package/dist/client/project-workspace-status-types.js.map +1 -0
- package/dist/client/project-workspace-status.d.ts +76 -0
- package/dist/client/project-workspace-status.d.ts.map +1 -0
- package/dist/client/project-workspace-status.js +368 -0
- package/dist/client/project-workspace-status.js.map +1 -0
- package/dist/client/projects.d.ts +53 -0
- package/dist/client/projects.d.ts.map +1 -1
- package/dist/client/projects.js +18 -0
- package/dist/client/projects.js.map +1 -1
- package/dist/client/versions-types.d.ts +3 -4
- package/dist/client/versions-types.d.ts.map +1 -1
- package/dist/client/versions-types.js +3 -4
- package/dist/client/versions-types.js.map +1 -1
- package/dist/client/workflows-types.d.ts +16 -3
- package/dist/client/workflows-types.d.ts.map +1 -1
- package/dist/client/workflows-types.js +47 -1
- package/dist/client/workflows-types.js.map +1 -1
- package/dist/client/workflows.d.ts.map +1 -1
- package/dist/client/workflows.js +2 -1
- package/dist/client/workflows.js.map +1 -1
- package/dist/client/workspace-package.d.ts +26 -0
- package/dist/client/workspace-package.d.ts.map +1 -0
- package/dist/client/workspace-package.js +85 -0
- package/dist/client/workspace-package.js.map +1 -0
- package/dist/client/workspace.d.ts +5 -1
- package/dist/client/workspace.d.ts.map +1 -1
- package/dist/client/workspace.js +3 -1
- package/dist/client/workspace.js.map +1 -1
- package/dist/config/platform-request-url.d.ts +2 -2
- package/dist/config/platform-request-url.js +4 -4
- package/docs/code-first-cli.md +28 -2
- package/docs/project-workspace-status.md +161 -0
- package/docs/sdk-mcp-mapping.md +2 -2
- package/package.json +1 -1
- package/schemas/entity-json-schemas/SCHEMA_SYNC.md +4 -3
- package/schemas/entity-json-schemas/data-product.json +1 -1
- package/schemas/entity-json-schemas/odps-product.json +1 -1
|
@@ -1,13 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CLI: loxtep projects list |
|
|
2
|
+
* CLI: loxtep projects list | get | link | changes | clone | pull | push
|
|
3
3
|
* Projects are the platform container for workflows, connectors, and deploy targets.
|
|
4
|
+
* Enriched with cheap status flags (github / local path / deployed when detectable).
|
|
5
|
+
* `--source local|remote|all` uses `~/.loxtep/workspaces.json`.
|
|
6
|
+
* `projects changes` = unpublished inventory (alias of `loxtep status --unpublished`).
|
|
4
7
|
*/
|
|
8
|
+
import { type CliResult } from '../project-context.js';
|
|
9
|
+
export type ProjectsListSource = 'all' | 'local' | 'remote';
|
|
5
10
|
export interface ProjectsCmdOptions {
|
|
6
11
|
configFilePath?: string;
|
|
7
12
|
credentialsPath?: string;
|
|
8
13
|
customerMcpPath?: string;
|
|
9
14
|
debug?: boolean;
|
|
15
|
+
cwd?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Filter list by known-locals registry:
|
|
18
|
+
* - `all` (default): remote list unchanged
|
|
19
|
+
* - `local`: only cloud projects present in `~/.loxtep/workspaces.json`
|
|
20
|
+
* - `remote`: cloud projects not in the registry
|
|
21
|
+
*/
|
|
22
|
+
source?: string;
|
|
23
|
+
/** Test override for registry path. */
|
|
24
|
+
registryPath?: string;
|
|
25
|
+
/** Target path for `projects link` (defaults to cwd). */
|
|
26
|
+
path?: string;
|
|
10
27
|
}
|
|
11
28
|
export declare function runProjectsList(options?: ProjectsCmdOptions): Promise<void>;
|
|
12
29
|
export declare function runProjectsGet(projectId: string, options?: ProjectsCmdOptions): Promise<void>;
|
|
30
|
+
export declare function runProjectsLink(projectRef: string, options?: ProjectsCmdOptions): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* `loxtep projects changes` — unpublished Local→Cloud / Cloud→Deployed inventory.
|
|
33
|
+
* Same payload as `loxtep status --unpublished`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function runProjectsChangesCommand(options?: ProjectsCmdOptions & {
|
|
36
|
+
json?: boolean;
|
|
37
|
+
}): Promise<CliResult>;
|
|
38
|
+
export declare function runProjectsChanges(options?: ProjectsCmdOptions & {
|
|
39
|
+
json?: boolean;
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
export declare function runProjectsClone(projectRef: string, dir: string | undefined, options?: ProjectsCmdOptions): Promise<void>;
|
|
42
|
+
export declare function runProjectsGithubPullCmd(options?: ProjectsCmdOptions & {
|
|
43
|
+
commitSha?: string;
|
|
44
|
+
projectId?: string;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
export declare function runProjectsGithubPushCmd(options?: ProjectsCmdOptions & {
|
|
47
|
+
commitMessage?: string;
|
|
48
|
+
branch?: string;
|
|
49
|
+
projectId?: string;
|
|
50
|
+
}): Promise<void>;
|
|
13
51
|
//# sourceMappingURL=projects-cmd.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/projects-cmd.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"projects-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/projects-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmBH,OAAO,EAEL,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAM/B,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAwED,wBAAsB,eAAe,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDrF;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAwDf;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE,kBAAkB,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACpD,OAAO,CAAC,SAAS,CAAC,CAMpB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,kBAAkB,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACpD,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,kBAAkB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5E,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,kBAAkB,GAAG;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -1,16 +1,127 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CLI: loxtep projects list |
|
|
2
|
+
* CLI: loxtep projects list | get | link | changes | clone | pull | push
|
|
3
3
|
* Projects are the platform container for workflows, connectors, and deploy targets.
|
|
4
|
+
* Enriched with cheap status flags (github / local path / deployed when detectable).
|
|
5
|
+
* `--source local|remote|all` uses `~/.loxtep/workspaces.json`.
|
|
6
|
+
* `projects changes` = unpublished inventory (alias of `loxtep status --unpublished`).
|
|
4
7
|
*/
|
|
5
8
|
import { toProjectListSummary } from '../../client/list-summaries.js';
|
|
9
|
+
import { buildProjectWorkspaceStatus, enrichProjectListSummary, toProjectListStatusEnrichment, } from '../../client/project-workspace-status.js';
|
|
10
|
+
import { pickLatestDeployment } from '../../client/deployments.js';
|
|
6
11
|
import { mapListSummaries, printCliListOutput } from '../cli-list-output.js';
|
|
7
12
|
import { requireCliClient } from '../create-cli-client.js';
|
|
13
|
+
import { knownLocalProjectIds, listKnownLocalsPresent, } from '../known-locals-registry.js';
|
|
14
|
+
import { tryLoadProjectConfig, } from '../project-context.js';
|
|
15
|
+
import { runLink } from './link-cmd.js';
|
|
16
|
+
import { runClone } from './clone-cmd.js';
|
|
17
|
+
import { runProjectsGithubPull, runProjectsGithubPush } from './projects-github-cmd.js';
|
|
18
|
+
import { runStatusCommand } from './status-cmd.js';
|
|
19
|
+
function parseSource(raw) {
|
|
20
|
+
if (raw == null || raw === '')
|
|
21
|
+
return 'all';
|
|
22
|
+
const v = raw.toLowerCase();
|
|
23
|
+
if (v === 'all' || v === 'local' || v === 'remote')
|
|
24
|
+
return v;
|
|
25
|
+
return { error: `Invalid --source '${raw}'. Use local | remote | all.` };
|
|
26
|
+
}
|
|
27
|
+
function filterBySource(items, source, knownIds) {
|
|
28
|
+
if (source === 'all')
|
|
29
|
+
return items;
|
|
30
|
+
if (source === 'local')
|
|
31
|
+
return items.filter(p => knownIds.has(p.project_id));
|
|
32
|
+
return items.filter(p => !knownIds.has(p.project_id));
|
|
33
|
+
}
|
|
34
|
+
function localOnlyPlaceholders(source, knownPresent, cloudItems) {
|
|
35
|
+
if (source !== 'local')
|
|
36
|
+
return [];
|
|
37
|
+
const cloudIds = new Set(cloudItems.map(p => p.project_id));
|
|
38
|
+
return knownPresent
|
|
39
|
+
.filter(w => !cloudIds.has(w.project_id))
|
|
40
|
+
.map(w => ({
|
|
41
|
+
project_id: w.project_id,
|
|
42
|
+
name: '(known local — not returned by cloud list)',
|
|
43
|
+
path: w.path,
|
|
44
|
+
last_seen_at: w.last_seen_at,
|
|
45
|
+
source: 'local',
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
function cwdLocalSnapshot(cwd) {
|
|
49
|
+
const loaded = tryLoadProjectConfig(cwd);
|
|
50
|
+
if (!loaded)
|
|
51
|
+
return null;
|
|
52
|
+
return {
|
|
53
|
+
project_id: loaded.project.project_id,
|
|
54
|
+
path: loaded.projectDir,
|
|
55
|
+
project_file: loaded.projectFilePath,
|
|
56
|
+
instance_id: loaded.project.instance_id ?? null,
|
|
57
|
+
api_url: loaded.project.api_url ?? null,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async function loadDeployedByProject(client) {
|
|
61
|
+
const map = new Map();
|
|
62
|
+
try {
|
|
63
|
+
const listed = await client.workspace.deployments.list({
|
|
64
|
+
page_size: 100,
|
|
65
|
+
sort_by: 'updated_at',
|
|
66
|
+
sort_order: 'desc',
|
|
67
|
+
});
|
|
68
|
+
for (const d of listed.items) {
|
|
69
|
+
if (map.has(d.project_id))
|
|
70
|
+
continue;
|
|
71
|
+
map.set(d.project_id, d.status === 'deployed' ? 'deployed' : 'never_deployed');
|
|
72
|
+
}
|
|
73
|
+
for (const d of listed.items) {
|
|
74
|
+
if (d.status === 'deployed')
|
|
75
|
+
map.set(d.project_id, 'deployed');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// List enrichment stays snappy: omit deployed_state when unavailable.
|
|
80
|
+
}
|
|
81
|
+
return map;
|
|
82
|
+
}
|
|
8
83
|
export async function runProjectsList(options = {}) {
|
|
84
|
+
const sourceResult = parseSource(options.source);
|
|
85
|
+
if (typeof sourceResult === 'object' && 'error' in sourceResult) {
|
|
86
|
+
console.error(sourceResult.error);
|
|
87
|
+
process.exitCode = 1;
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const source = sourceResult;
|
|
91
|
+
const cwd = options.cwd ?? process.cwd();
|
|
92
|
+
const local = cwdLocalSnapshot(cwd);
|
|
9
93
|
const { client } = await requireCliClient(options);
|
|
10
94
|
try {
|
|
11
95
|
const result = await client.workspace.projects.list({ page_size: 100 });
|
|
12
|
-
const
|
|
13
|
-
|
|
96
|
+
const knownIds = knownLocalProjectIds(options.registryPath);
|
|
97
|
+
const knownPresent = listKnownLocalsPresent(options.registryPath);
|
|
98
|
+
const filteredItems = filterBySource(result.items, source, knownIds);
|
|
99
|
+
const filtered = { ...result, items: filteredItems };
|
|
100
|
+
const deployed_by_project = await loadDeployedByProject(client);
|
|
101
|
+
const attach_state = local?.instance_id && local.api_url ? 'attached' : 'unattached';
|
|
102
|
+
const summary = mapListSummaries(filtered, project => ({
|
|
103
|
+
...toProjectListSummary(project),
|
|
104
|
+
...enrichProjectListSummary(project, {
|
|
105
|
+
cwd_project_id: local?.project_id ?? null,
|
|
106
|
+
cwd_path: local?.path ?? null,
|
|
107
|
+
cwd_attach_state: local ? attach_state : undefined,
|
|
108
|
+
deployed_by_project,
|
|
109
|
+
}),
|
|
110
|
+
}));
|
|
111
|
+
const extra = localOnlyPlaceholders(source, knownPresent, filteredItems);
|
|
112
|
+
const payload = source === 'all'
|
|
113
|
+
? summary
|
|
114
|
+
: {
|
|
115
|
+
...summary,
|
|
116
|
+
source,
|
|
117
|
+
known_locals: knownPresent.map(w => ({
|
|
118
|
+
project_id: w.project_id,
|
|
119
|
+
path: w.path,
|
|
120
|
+
last_seen_at: w.last_seen_at,
|
|
121
|
+
})),
|
|
122
|
+
local_only: extra,
|
|
123
|
+
};
|
|
124
|
+
printCliListOutput(payload, filtered, { ...options, label: 'projects list' });
|
|
14
125
|
}
|
|
15
126
|
catch (err) {
|
|
16
127
|
console.error(err.message);
|
|
@@ -18,14 +129,130 @@ export async function runProjectsList(options = {}) {
|
|
|
18
129
|
}
|
|
19
130
|
}
|
|
20
131
|
export async function runProjectsGet(projectId, options = {}) {
|
|
132
|
+
const cwd = options.cwd ?? process.cwd();
|
|
133
|
+
const local = cwdLocalSnapshot(cwd);
|
|
21
134
|
const { client } = await requireCliClient(options);
|
|
22
135
|
try {
|
|
23
136
|
const project = await client.workspace.projects.get(projectId);
|
|
24
|
-
|
|
137
|
+
let deployments = null;
|
|
138
|
+
let deployments_unavailable = false;
|
|
139
|
+
try {
|
|
140
|
+
const listed = await client.workspace.deployments.list({
|
|
141
|
+
project_id: projectId,
|
|
142
|
+
page_size: 20,
|
|
143
|
+
sort_by: 'updated_at',
|
|
144
|
+
sort_order: 'desc',
|
|
145
|
+
});
|
|
146
|
+
deployments = listed.items;
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
deployments_unavailable = true;
|
|
150
|
+
}
|
|
151
|
+
const localForProject = local && local.project_id === projectId ? local : null;
|
|
152
|
+
const status = buildProjectWorkspaceStatus({
|
|
153
|
+
population_depth: 'status',
|
|
154
|
+
local: localForProject,
|
|
155
|
+
cloud: project,
|
|
156
|
+
deployments,
|
|
157
|
+
deployments_unavailable,
|
|
158
|
+
});
|
|
159
|
+
const enrichment = toProjectListStatusEnrichment(status);
|
|
160
|
+
const latest = deployments ? pickLatestDeployment(deployments) : null;
|
|
161
|
+
console.log(JSON.stringify({
|
|
162
|
+
...project,
|
|
163
|
+
status_enrichment: enrichment,
|
|
164
|
+
workspace_status: status,
|
|
165
|
+
...(latest
|
|
166
|
+
? {
|
|
167
|
+
latest_deployment: {
|
|
168
|
+
deployment_id: latest.deployment_id,
|
|
169
|
+
status: latest.status,
|
|
170
|
+
updated_at: latest.updated_at,
|
|
171
|
+
},
|
|
172
|
+
}
|
|
173
|
+
: {}),
|
|
174
|
+
}, null, 2));
|
|
25
175
|
}
|
|
26
176
|
catch (err) {
|
|
27
177
|
console.error(err.message);
|
|
28
178
|
process.exitCode = 1;
|
|
29
179
|
}
|
|
30
180
|
}
|
|
181
|
+
export async function runProjectsLink(projectRef, options = {}) {
|
|
182
|
+
const { client } = await requireCliClient(options);
|
|
183
|
+
const result = await runLink(client, {
|
|
184
|
+
projectRef,
|
|
185
|
+
path: options.path,
|
|
186
|
+
registryPath: options.registryPath,
|
|
187
|
+
});
|
|
188
|
+
for (const line of result.stdout)
|
|
189
|
+
console.log(line);
|
|
190
|
+
for (const line of result.stderr)
|
|
191
|
+
console.error(line);
|
|
192
|
+
if (result.exitCode !== 0)
|
|
193
|
+
process.exitCode = result.exitCode;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* `loxtep projects changes` — unpublished Local→Cloud / Cloud→Deployed inventory.
|
|
197
|
+
* Same payload as `loxtep status --unpublished`.
|
|
198
|
+
*/
|
|
199
|
+
export async function runProjectsChangesCommand(options = {}) {
|
|
200
|
+
return runStatusCommand({
|
|
201
|
+
cwd: options.cwd,
|
|
202
|
+
unpublished: true,
|
|
203
|
+
json: options.json === true,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
export async function runProjectsChanges(options = {}) {
|
|
207
|
+
const result = await runProjectsChangesCommand(options);
|
|
208
|
+
for (const line of result.stdout)
|
|
209
|
+
console.log(line);
|
|
210
|
+
for (const line of result.stderr)
|
|
211
|
+
console.error(line);
|
|
212
|
+
if (result.exitCode !== 0)
|
|
213
|
+
process.exitCode = result.exitCode;
|
|
214
|
+
}
|
|
215
|
+
export async function runProjectsClone(projectRef, dir, options = {}) {
|
|
216
|
+
const { client } = await requireCliClient(options);
|
|
217
|
+
const result = await runClone(client, {
|
|
218
|
+
projectRef,
|
|
219
|
+
dir,
|
|
220
|
+
registryPath: options.registryPath,
|
|
221
|
+
});
|
|
222
|
+
for (const line of result.stdout)
|
|
223
|
+
console.log(line);
|
|
224
|
+
for (const line of result.stderr)
|
|
225
|
+
console.error(line);
|
|
226
|
+
if (result.exitCode !== 0)
|
|
227
|
+
process.exitCode = result.exitCode;
|
|
228
|
+
}
|
|
229
|
+
export async function runProjectsGithubPullCmd(options = {}) {
|
|
230
|
+
const { client } = await requireCliClient(options);
|
|
231
|
+
const result = await runProjectsGithubPull(client, {
|
|
232
|
+
projectId: options.projectId,
|
|
233
|
+
commitSha: options.commitSha,
|
|
234
|
+
cwd: options.cwd,
|
|
235
|
+
});
|
|
236
|
+
for (const line of result.stdout)
|
|
237
|
+
console.log(line);
|
|
238
|
+
for (const line of result.stderr)
|
|
239
|
+
console.error(line);
|
|
240
|
+
if (result.exitCode !== 0)
|
|
241
|
+
process.exitCode = result.exitCode;
|
|
242
|
+
}
|
|
243
|
+
export async function runProjectsGithubPushCmd(options = {}) {
|
|
244
|
+
const { client } = await requireCliClient(options);
|
|
245
|
+
const result = await runProjectsGithubPush(client, {
|
|
246
|
+
projectId: options.projectId,
|
|
247
|
+
commitMessage: options.commitMessage,
|
|
248
|
+
branch: options.branch,
|
|
249
|
+
cwd: options.cwd,
|
|
250
|
+
});
|
|
251
|
+
for (const line of result.stdout)
|
|
252
|
+
console.log(line);
|
|
253
|
+
for (const line of result.stderr)
|
|
254
|
+
console.error(line);
|
|
255
|
+
if (result.exitCode !== 0)
|
|
256
|
+
process.exitCode = result.exitCode;
|
|
257
|
+
}
|
|
31
258
|
//# sourceMappingURL=projects-cmd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/projects-cmd.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"projects-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/projects-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub sync wrappers for bound projects (LOX-1188).
|
|
3
|
+
*
|
|
4
|
+
* - `loxtep projects pull` → POST /projects/{id}/github/pull (S3 ← GitHub)
|
|
5
|
+
* - `loxtep projects push` → POST /projects/{id}/github/push (S3 → GitHub)
|
|
6
|
+
*
|
|
7
|
+
* Unbound packages keep using top-level `loxtep push` (save_workflow_bundle).
|
|
8
|
+
* These commands refuse when the cloud project has no github_repo_url.
|
|
9
|
+
*/
|
|
10
|
+
import type { LoxtepClient } from '../../client/loxtep-client.js';
|
|
11
|
+
import { type CliResult } from '../project-context.js';
|
|
12
|
+
export interface GithubSyncOptions {
|
|
13
|
+
/** Override project id (else `.loxtep/project.json`). */
|
|
14
|
+
projectId?: string;
|
|
15
|
+
cwd?: string;
|
|
16
|
+
/** pull only */
|
|
17
|
+
commitSha?: string;
|
|
18
|
+
/** push only */
|
|
19
|
+
commitMessage?: string;
|
|
20
|
+
branch?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function runProjectsGithubPull(client: LoxtepClient, options?: GithubSyncOptions): Promise<CliResult>;
|
|
23
|
+
export declare function runProjectsGithubPush(client: LoxtepClient, options?: GithubSyncOptions): Promise<CliResult>;
|
|
24
|
+
//# sourceMappingURL=projects-github-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects-github-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/projects-github-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAG7E,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4CD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,SAAS,CAAC,CA2BpB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,SAAS,CAAC,CA6BpB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub sync wrappers for bound projects (LOX-1188).
|
|
3
|
+
*
|
|
4
|
+
* - `loxtep projects pull` → POST /projects/{id}/github/pull (S3 ← GitHub)
|
|
5
|
+
* - `loxtep projects push` → POST /projects/{id}/github/push (S3 → GitHub)
|
|
6
|
+
*
|
|
7
|
+
* Unbound packages keep using top-level `loxtep push` (save_workflow_bundle).
|
|
8
|
+
* These commands refuse when the cloud project has no github_repo_url.
|
|
9
|
+
*/
|
|
10
|
+
import { tryLoadProjectConfig } from '../project-context.js';
|
|
11
|
+
import { resolveCloudProject } from './link-cmd.js';
|
|
12
|
+
async function resolveBoundProjectId(client, options) {
|
|
13
|
+
const cwd = options.cwd ?? process.cwd();
|
|
14
|
+
let projectId = options.projectId;
|
|
15
|
+
if (!projectId) {
|
|
16
|
+
const loaded = tryLoadProjectConfig(cwd);
|
|
17
|
+
if (!loaded) {
|
|
18
|
+
return {
|
|
19
|
+
exitCode: 1,
|
|
20
|
+
stdout: [],
|
|
21
|
+
stderr: [
|
|
22
|
+
'No .loxtep/project.json found. Run from a cloned/linked workspace or pass --project-id.',
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
projectId = loaded.project.project_id;
|
|
27
|
+
}
|
|
28
|
+
let cloud;
|
|
29
|
+
try {
|
|
30
|
+
cloud = await resolveCloudProject(client, projectId);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
34
|
+
return { exitCode: 1, stdout: [], stderr: [`GitHub sync failed: ${reason}`] };
|
|
35
|
+
}
|
|
36
|
+
if (!cloud.github_repo_url) {
|
|
37
|
+
return {
|
|
38
|
+
exitCode: 1,
|
|
39
|
+
stdout: [],
|
|
40
|
+
stderr: [
|
|
41
|
+
`Project "${cloud.name}" (${cloud.project_id}) has no GitHub binding.`,
|
|
42
|
+
'Use `loxtep push` for unbound Local→Cloud package upload — do not pretend Git.',
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return { project_id: cloud.project_id, name: cloud.name };
|
|
47
|
+
}
|
|
48
|
+
export async function runProjectsGithubPull(client, options = {}) {
|
|
49
|
+
const resolved = await resolveBoundProjectId(client, options);
|
|
50
|
+
if ('exitCode' in resolved)
|
|
51
|
+
return resolved;
|
|
52
|
+
try {
|
|
53
|
+
const result = await client.workspace.projects.github_pull(resolved.project_id, {
|
|
54
|
+
commit_sha: options.commitSha,
|
|
55
|
+
});
|
|
56
|
+
const ok = result.success !== false;
|
|
57
|
+
const lines = [
|
|
58
|
+
`GitHub pull for "${resolved.name}" (${resolved.project_id}): ${ok ? 'ok' : 'failed'}`,
|
|
59
|
+
result.commit_sha ? ` commit_sha: ${result.commit_sha}` : '',
|
|
60
|
+
result.file_count != null ? ` file_count: ${result.file_count}` : '',
|
|
61
|
+
result.message ? ` ${result.message}` : '',
|
|
62
|
+
].filter(Boolean);
|
|
63
|
+
if (result.errors?.length) {
|
|
64
|
+
return {
|
|
65
|
+
exitCode: 1,
|
|
66
|
+
stdout: lines,
|
|
67
|
+
stderr: result.errors,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return { exitCode: ok ? 0 : 1, stdout: lines, stderr: ok ? [] : ['GitHub pull failed'] };
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
74
|
+
return { exitCode: 1, stdout: [], stderr: [`GitHub pull failed: ${reason}`] };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export async function runProjectsGithubPush(client, options = {}) {
|
|
78
|
+
const resolved = await resolveBoundProjectId(client, options);
|
|
79
|
+
if ('exitCode' in resolved)
|
|
80
|
+
return resolved;
|
|
81
|
+
try {
|
|
82
|
+
const result = await client.workspace.projects.github_push(resolved.project_id, {
|
|
83
|
+
commit_message: options.commitMessage,
|
|
84
|
+
branch: options.branch,
|
|
85
|
+
});
|
|
86
|
+
const ok = result.success !== false;
|
|
87
|
+
const lines = [
|
|
88
|
+
`GitHub push for "${resolved.name}" (${resolved.project_id}): ${ok ? 'ok' : 'failed'}`,
|
|
89
|
+
result.commit_sha ? ` commit_sha: ${result.commit_sha}` : '',
|
|
90
|
+
result.commit_url ? ` commit_url: ${result.commit_url}` : '',
|
|
91
|
+
result.file_count != null ? ` file_count: ${result.file_count}` : '',
|
|
92
|
+
result.message ? ` ${result.message}` : '',
|
|
93
|
+
].filter(Boolean);
|
|
94
|
+
if (result.errors?.length) {
|
|
95
|
+
return {
|
|
96
|
+
exitCode: 1,
|
|
97
|
+
stdout: lines,
|
|
98
|
+
stderr: result.errors,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return { exitCode: ok ? 0 : 1, stdout: lines, stderr: ok ? [] : ['GitHub push failed'] };
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
105
|
+
return { exitCode: 1, stdout: [], stderr: [`GitHub push failed: ${reason}`] };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=projects-github-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects-github-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/projects-github-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* CLI: loxtep push — upload local workflow packages to workspace S3 (save_workflow_bundle),
|
|
3
3
|
* then trigger project reindex so deploy sees new workflows.
|
|
4
4
|
*/
|
|
5
|
+
import { collectFlatBundle, listLocalWorkflowIds } from '../../client/workspace-package.js';
|
|
5
6
|
export interface PushCmdOptions {
|
|
6
7
|
configFilePath?: string;
|
|
7
8
|
credentialsPath?: string;
|
|
@@ -9,13 +10,8 @@ export interface PushCmdOptions {
|
|
|
9
10
|
debug?: boolean;
|
|
10
11
|
cwd?: string;
|
|
11
12
|
}
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
* written by `ingest`/`transform`/`delivery create`) — as opposed to the code-first-cli
|
|
15
|
-
* flow's flat `.ts`/`.js` module files, which `deploy-cmd.ts` discovers separately.
|
|
16
|
-
*/
|
|
17
|
-
export declare function listLocalWorkflowIds(projectDir: string): string[];
|
|
18
|
-
export declare function collectFlatBundle(projectDir: string, workflowId: string): Record<string, Record<string, unknown>>;
|
|
13
|
+
/** @deprecated Prefer `../../client/workspace-package.js` — re-exported for existing imports. */
|
|
14
|
+
export { collectFlatBundle, listLocalWorkflowIds };
|
|
19
15
|
/**
|
|
20
16
|
* Push all local workflow packages via save_workflow_bundle, then reindex the project.
|
|
21
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/push-cmd.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"push-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/push-cmd.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,mCAAmC,CAAC;AAG3C,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,iGAAiG;AACjG,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AAEnD;;GAEG;AACH,wBAAsB,OAAO,CAC3B,MAAM,GAAE;IACN,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,EACN,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|
|
@@ -2,47 +2,12 @@
|
|
|
2
2
|
* CLI: loxtep push — upload local workflow packages to workspace S3 (save_workflow_bundle),
|
|
3
3
|
* then trigger project reindex so deploy sees new workflows.
|
|
4
4
|
*/
|
|
5
|
-
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
6
|
-
import { join } from 'node:path';
|
|
7
5
|
import { findProjectDir } from '../project-context.js';
|
|
8
6
|
import { requireCliClient } from '../create-cli-client.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*/
|
|
14
|
-
export function listLocalWorkflowIds(projectDir) {
|
|
15
|
-
const workflowsRoot = join(projectDir, 'workflows');
|
|
16
|
-
if (!existsSync(workflowsRoot))
|
|
17
|
-
return [];
|
|
18
|
-
return readdirSync(workflowsRoot, { withFileTypes: true })
|
|
19
|
-
.filter(d => d.isDirectory())
|
|
20
|
-
.map(d => d.name)
|
|
21
|
-
.filter(id => existsSync(join(workflowsRoot, id, 'workflow.json')));
|
|
22
|
-
}
|
|
23
|
-
export function collectFlatBundle(projectDir, workflowId) {
|
|
24
|
-
const root = join(projectDir, 'workflows', workflowId);
|
|
25
|
-
const files = {};
|
|
26
|
-
const workflowJson = JSON.parse(readFileSync(join(root, 'workflow.json'), 'utf8'));
|
|
27
|
-
files['workflow.json'] = workflowJson;
|
|
28
|
-
for (const entityDir of [
|
|
29
|
-
'connections',
|
|
30
|
-
'data-products',
|
|
31
|
-
'transformations',
|
|
32
|
-
'validations',
|
|
33
|
-
]) {
|
|
34
|
-
const dir = join(root, entityDir);
|
|
35
|
-
if (!existsSync(dir))
|
|
36
|
-
continue;
|
|
37
|
-
for (const name of readdirSync(dir)) {
|
|
38
|
-
if (!name.endsWith('.json'))
|
|
39
|
-
continue;
|
|
40
|
-
const entity = JSON.parse(readFileSync(join(dir, name), 'utf8'));
|
|
41
|
-
files[`${entityDir}/${name}`] = entity;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return files;
|
|
45
|
-
}
|
|
7
|
+
import { collectFlatBundle, listLocalWorkflowIds, } from '../../client/workspace-package.js';
|
|
8
|
+
import { writePushManifestFromProjectDir } from '../../client/project-workspace-inventory.js';
|
|
9
|
+
/** @deprecated Prefer `../../client/workspace-package.js` — re-exported for existing imports. */
|
|
10
|
+
export { collectFlatBundle, listLocalWorkflowIds };
|
|
46
11
|
/**
|
|
47
12
|
* Push all local workflow packages via save_workflow_bundle, then reindex the project.
|
|
48
13
|
*/
|
|
@@ -107,6 +72,12 @@ export async function runPush(params = {}, options = {}) {
|
|
|
107
72
|
dry_run: params.dry_run ?? false,
|
|
108
73
|
}, null, 2));
|
|
109
74
|
if (failed.length === 0 && !params.dry_run) {
|
|
75
|
+
try {
|
|
76
|
+
writePushManifestFromProjectDir(projectDir, projectId);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
console.error(`Warning: could not write local push manifest (${err instanceof Error ? err.message : String(err)}).`);
|
|
80
|
+
}
|
|
110
81
|
console.error('Push complete. Next: `loxtep deploy`.');
|
|
111
82
|
}
|
|
112
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/push-cmd.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"push-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/push-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI: loxtep status [--unpublished] [--json]
|
|
3
|
+
*
|
|
4
|
+
* Cwd-first project workspace status (local / cloud / deployed).
|
|
5
|
+
* Distinct from `loxtep observe status` (runtime bots/queues).
|
|
6
|
+
*/
|
|
7
|
+
import { type CreateCliClientOptions } from '../create-cli-client.js';
|
|
8
|
+
import type { CliResult } from '../project-context.js';
|
|
9
|
+
export interface StatusCmdOptions extends CreateCliClientOptions {
|
|
10
|
+
cwd?: string;
|
|
11
|
+
/** Emit full JSON status payload instead of the one-screen text view. */
|
|
12
|
+
json?: boolean;
|
|
13
|
+
/** Entity/file inventory (population_depth: unpublished). */
|
|
14
|
+
unpublished?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Execute `loxtep status` (structured {@link CliResult} for tests).
|
|
18
|
+
*/
|
|
19
|
+
export declare function runStatusCommand(options?: StatusCmdOptions): Promise<CliResult>;
|
|
20
|
+
export declare function runStatus(options?: StatusCmdOptions): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=status-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status-cmd.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAoB,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAExF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,gBAAiB,SAAQ,sBAAsB;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAiCD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAiFzF;AAED,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7E"}
|