@ai-support-agent/cli 0.3.0-beta.1 → 0.3.1-beta.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/ansible/callback_plugins/json.py +146 -0
- package/ansible/callback_plugins/tests/test_json_callback.py +171 -0
- package/ansible/playbook.yml +52 -0
- package/ansible/roles/database/tasks/main.yml +121 -0
- package/ansible/roles/dns_tls/tasks/main.yml +75 -0
- package/ansible/roles/dns_tls/templates/Caddyfile.j2 +4 -0
- package/ansible/roles/docker/tasks/main.yml +51 -0
- package/ansible/roles/os_init/tasks/main.yml +61 -0
- package/ansible/roles/web_server/tasks/main.yml +47 -0
- package/dist/api-client.d.ts +25 -1
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +33 -0
- package/dist/api-client.js.map +1 -1
- package/dist/commands/chat-executor.js +1 -1
- package/dist/commands/chat-executor.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +14 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -1
- package/dist/mcp/config-writer.d.ts +24 -1
- package/dist/mcp/config-writer.d.ts.map +1 -1
- package/dist/mcp/config-writer.js +27 -2
- package/dist/mcp/config-writer.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/update-system-knowledge.d.ts +29 -0
- package/dist/mcp/tools/update-system-knowledge.d.ts.map +1 -0
- package/dist/mcp/tools/update-system-knowledge.js +63 -0
- package/dist/mcp/tools/update-system-knowledge.js.map +1 -0
- package/dist/oneshot-runner.d.ts.map +1 -1
- package/dist/oneshot-runner.js +5 -2
- package/dist/oneshot-runner.js.map +1 -1
- package/dist/server-setup/known-hosts-store.d.ts +16 -0
- package/dist/server-setup/known-hosts-store.d.ts.map +1 -0
- package/dist/server-setup/known-hosts-store.js +89 -0
- package/dist/server-setup/known-hosts-store.js.map +1 -0
- package/dist/server-setup/server-setup-runner.d.ts +27 -0
- package/dist/server-setup/server-setup-runner.d.ts.map +1 -0
- package/dist/server-setup/server-setup-runner.js +576 -0
- package/dist/server-setup/server-setup-runner.js.map +1 -0
- package/dist/types/command.d.ts +5 -1
- package/dist/types/command.d.ts.map +1 -1
- package/dist/types/command.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/server-setup.d.ts +30 -0
- package/dist/types/server-setup.d.ts.map +1 -0
- package/dist/types/server-setup.js +12 -0
- package/dist/types/server-setup.js.map +1 -0
- package/dist/types/tool-output.d.ts +62 -0
- package/dist/types/tool-output.d.ts.map +1 -1
- package/docker/Dockerfile +30 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,gBAAgB,CAAA"}
|
package/dist/types/index.js
CHANGED
|
@@ -23,4 +23,5 @@ __exportStar(require("./chat"), exports);
|
|
|
23
23
|
__exportStar(require("./alert"), exports);
|
|
24
24
|
__exportStar(require("./tool-output"), exports);
|
|
25
25
|
__exportStar(require("./ecs"), exports);
|
|
26
|
+
__exportStar(require("./server-setup"), exports);
|
|
26
27
|
//# sourceMappingURL=index.js.map
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,2CAAwB;AACxB,4CAAyB;AACzB,2CAAwB;AACxB,4CAAyB;AACzB,yCAAsB;AACtB,0CAAuB;AACvB,gDAA6B;AAC7B,wCAAqB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,2CAAwB;AACxB,4CAAyB;AACzB,2CAAwB;AACxB,4CAAyB;AACzB,yCAAsB;AACtB,0CAAuB;AACvB,gDAA6B;AAC7B,wCAAqB;AACrB,iDAA8B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server setup execution types (Ansible-driven server provisioning).
|
|
3
|
+
*
|
|
4
|
+
* A `server_setup_exec` command runs a fixed set of Ansible roles (bundled
|
|
5
|
+
* with the agent CLI under `ansible/`) against a single target host, using
|
|
6
|
+
* an SSH private key fetched Just-In-Time from the API (never persisted
|
|
7
|
+
* beyond the lifetime of the command). See admin-docs
|
|
8
|
+
* `docs/features/server-setup.md` for the full design.
|
|
9
|
+
*/
|
|
10
|
+
/** stepType supported by the bundled `ansible/playbook.yml` roles (MVP scope). */
|
|
11
|
+
export type ServerSetupStepType = 'os_init' | 'docker' | 'web_server' | 'database' | 'dns_tls';
|
|
12
|
+
/** One step of a server setup execution: an Ansible role selected by tag, with its variables. */
|
|
13
|
+
export interface ServerSetupStep {
|
|
14
|
+
stepType: ServerSetupStepType;
|
|
15
|
+
params: Record<string, string>;
|
|
16
|
+
}
|
|
17
|
+
/** Payload of the `server_setup_exec` command. */
|
|
18
|
+
export interface ServerSetupExecPayload {
|
|
19
|
+
executionId: string;
|
|
20
|
+
sshHostId: string;
|
|
21
|
+
steps: ServerSetupStep[];
|
|
22
|
+
}
|
|
23
|
+
/** Result of a single step, parsed from the `ansible-playbook` JSON callback output. */
|
|
24
|
+
export interface ServerSetupStepResult {
|
|
25
|
+
stepType: string;
|
|
26
|
+
status: 'ok' | 'failed' | 'skipped';
|
|
27
|
+
changed: boolean;
|
|
28
|
+
message: string;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=server-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-setup.d.ts","sourceRoot":"","sources":["../../src/types/server-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kFAAkF;AAClF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAA;AAE9F,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,eAAe,EAAE,CAAA;CACzB;AAED,wFAAwF;AACxF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAA;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Server setup execution types (Ansible-driven server provisioning).
|
|
4
|
+
*
|
|
5
|
+
* A `server_setup_exec` command runs a fixed set of Ansible roles (bundled
|
|
6
|
+
* with the agent CLI under `ansible/`) against a single target host, using
|
|
7
|
+
* an SSH private key fetched Just-In-Time from the API (never persisted
|
|
8
|
+
* beyond the lifetime of the command). See admin-docs
|
|
9
|
+
* `docs/features/server-setup.md` for the full design.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
//# sourceMappingURL=server-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-setup.js","sourceRoot":"","sources":["../../src/types/server-setup.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
|
|
@@ -59,4 +59,66 @@ export interface TriggerE2eTestResult {
|
|
|
59
59
|
};
|
|
60
60
|
error?: ToolOutputError;
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* `update_system_knowledge` Agent MCP ツールが `POST /api/{tenantCode}/agent/knowledge` に
|
|
64
|
+
* 送るリクエストボディ。
|
|
65
|
+
*
|
|
66
|
+
* `canPublishHint`/`requesterUserId`/`projectCode` を生のリクエストフィールドとしてそのまま
|
|
67
|
+
* 信用する旧設計には、有効なagentサービストークンさえあればリクエストボディに
|
|
68
|
+
* `canPublishHint: true` を直接指定して承認ワークフローを完全にバイパスできてしまう
|
|
69
|
+
* CRITICALな権限バイパス脆弱性があった。api側はこれを修正し、信頼の起点を
|
|
70
|
+
* 「クライアント自己申告のcanPublishHint」から「サーバー側で発行済みのチャットコマンド
|
|
71
|
+
* レコードの参照」に変更した。
|
|
72
|
+
*
|
|
73
|
+
* `commandId`/`agentId` はツールのスキーマ(LLMが指定できるパラメータ)には含まれない。
|
|
74
|
+
* agent側が config-writer.ts 経由でMCPサブプロセスの環境変数
|
|
75
|
+
* (`AI_SUPPORT_AGENT_KNOWLEDGE_COMMAND_ID`/`AI_SUPPORT_AGENT_KNOWLEDGE_AGENT_ID`)へ伝搬し、
|
|
76
|
+
* ツール実装(`update-system-knowledge.ts`)がそこから読み取ってここに詰める。api側はこの
|
|
77
|
+
* `commandId`/`agentId` で `AgentCommandQueueService.getCommand(commandId, agentId,
|
|
78
|
+
* tenantCode)` を引き、コマンド生成時に刻印された本物の `knowledgeCanPublish`/
|
|
79
|
+
* `knowledgeRequesterUserId` を引き当てる。省略時、またはレコードが見つからない場合は
|
|
80
|
+
* 安全側のdraftになる。`projectCode` はもはやリクエストボディで受け付けず、常にトークン
|
|
81
|
+
* 自体のスコープ(`AgentAuthInfo.projectCode`)が使われる。
|
|
82
|
+
*/
|
|
83
|
+
export interface UpdateSystemKnowledgeRequest {
|
|
84
|
+
/** 指定時は改訂、未指定時は新規作成 */
|
|
85
|
+
id?: string;
|
|
86
|
+
title: string;
|
|
87
|
+
content: string;
|
|
88
|
+
category: string;
|
|
89
|
+
tags?: string[];
|
|
90
|
+
sourceIssue?: string;
|
|
91
|
+
/**
|
|
92
|
+
* このナレッジ登録依頼の元になったチャットコマンドのID。api側の
|
|
93
|
+
* `AgentCommandQueueService.getCommand` によるコマンドレコード引き当てに使う。
|
|
94
|
+
*/
|
|
95
|
+
commandId?: string;
|
|
96
|
+
/** 上記コマンドレコード引き当て用のエージェント自身のagentId */
|
|
97
|
+
agentId?: string;
|
|
98
|
+
/** 冪等性キー。新規作成時、同一callIdでのリトライは同一のナレッジIDとして扱われる */
|
|
99
|
+
callId?: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* `update_system_knowledge` Agent MCP ツールの結果(`POST /api/{tenantCode}/agent/knowledge` の
|
|
103
|
+
* レスポンスをそのまま返す)。他の `agent/tools/*` エンドポイントと異なり
|
|
104
|
+
* `{success, data, error}` ではなく、201でナレッジ詳細オブジェクトを直接返す。
|
|
105
|
+
*/
|
|
106
|
+
export interface UpdateSystemKnowledgeResult {
|
|
107
|
+
id: string;
|
|
108
|
+
tenantCode?: string;
|
|
109
|
+
projectCode?: string;
|
|
110
|
+
category?: string;
|
|
111
|
+
title?: string;
|
|
112
|
+
content?: string;
|
|
113
|
+
tags?: string[];
|
|
114
|
+
sourceIssue?: string;
|
|
115
|
+
/**
|
|
116
|
+
* サーバー側で `commandId`/`agentId` から引き当てた実際の knowledgeCanPublish が
|
|
117
|
+
* trueの場合は即時公開(published)、それ以外(省略時・コマンドレコード未検出を含む)は
|
|
118
|
+
* 承認待ちのdraft
|
|
119
|
+
*/
|
|
120
|
+
status?: 'published' | 'draft';
|
|
121
|
+
createdAt?: string;
|
|
122
|
+
updatedAt?: string;
|
|
123
|
+
}
|
|
62
124
|
//# sourceMappingURL=tool-output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-output.d.ts","sourceRoot":"","sources":["../../src/types/tool-output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjD,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClE,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;KAAE,CAAA;IAC5E,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACvB,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IACrD,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB"}
|
|
1
|
+
{"version":3,"file":"tool-output.d.ts","sourceRoot":"","sources":["../../src/types/tool-output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjD,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClE,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;KAAE,CAAA;IAC5E,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACvB,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IACrD,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,4BAA4B;IAC3C,uBAAuB;IACvB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
|
package/docker/Dockerfile
CHANGED
|
@@ -53,7 +53,36 @@ RUN pip3 install --no-cache-dir --break-system-packages \
|
|
|
53
53
|
# HTML/XML parsing (for document content extraction)
|
|
54
54
|
beautifulsoup4==4.* lxml==5.* \
|
|
55
55
|
# Character encoding detection (for legacy files)
|
|
56
|
-
chardet==5.*
|
|
56
|
+
chardet==5.* \
|
|
57
|
+
# Server setup execution: runs agent/ansible/playbook.yml against target hosts.
|
|
58
|
+
# Pinned to a range validated against ansible/callback_plugins/json.py and
|
|
59
|
+
# ansible/roles/database (CallbackBase's v2_runner_on_*/v2_playbook_on_stats
|
|
60
|
+
# hooks and module result shapes are internal APIs, not covered by ansible-core's
|
|
61
|
+
# semver-ish compatibility promise) rather than the previous unbounded `2.*`,
|
|
62
|
+
# which could silently pick up a future major ansible-core release with
|
|
63
|
+
# changed callback internals.
|
|
64
|
+
'ansible-core>=2.16,<2.18'
|
|
65
|
+
|
|
66
|
+
# Ansible collections used by ansible/roles/database/tasks/main.yml to set the
|
|
67
|
+
# MySQL root / PostgreSQL postgres admin password via a proper module
|
|
68
|
+
# parameter (ansible.mysql.mysql_user / community.postgresql.postgresql_user)
|
|
69
|
+
# instead of interpolating the password into a raw SQL string, which would be
|
|
70
|
+
# vulnerable to SQL injection via a password containing a single quote.
|
|
71
|
+
# `ansible.mysql` is used rather than the now-deprecated
|
|
72
|
+
# `community.mysql.mysql_user` (removal planned for community.mysql 6.0.0).
|
|
73
|
+
# Version ranges pinned for the same reproducibility reason as ansible-core
|
|
74
|
+
# above — an unbounded install could silently pick up a future major release
|
|
75
|
+
# with a changed module interface (e.g. mysql_user/postgresql_user parameter
|
|
76
|
+
# shape) that ansible/roles/database/tasks/main.yml wasn't validated against.
|
|
77
|
+
# Installed to /usr/share/ansible/collections — one of ansible-core's default
|
|
78
|
+
# collection search paths regardless of the runtime user's $HOME — so the
|
|
79
|
+
# collections are found no matter which UID the container ultimately runs as
|
|
80
|
+
# (see docker/entrypoint.sh's dynamic passwd-entry handling for --user).
|
|
81
|
+
RUN ansible-galaxy collection install \
|
|
82
|
+
'ansible.mysql:>=5.0.0,<6.0.0' \
|
|
83
|
+
'community.postgresql:>=4.0.0,<5.0.0' \
|
|
84
|
+
-p /usr/share/ansible/collections \
|
|
85
|
+
&& chmod -R a+rX /usr/share/ansible/collections
|
|
57
86
|
|
|
58
87
|
# =============================================================================
|
|
59
88
|
# Layer 3: System CLIs — external binary downloads (stable, rarely changes)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-support-agent/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1-beta.0",
|
|
4
4
|
"description": "AI Support Agent CLI client",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"files": [
|
|
25
25
|
"dist",
|
|
26
26
|
"docker",
|
|
27
|
+
"ansible",
|
|
27
28
|
"playwright.subprocess.config.js",
|
|
28
29
|
"LICENSE",
|
|
29
30
|
"README.md",
|