@apso/cli 0.15.1 → 0.15.3
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/dist/commands/mcp/serve.js +5 -7
- package/dist/lib/doctor/runner.d.ts +29 -0
- package/dist/lib/doctor/runner.js +92 -11
- package/dist/lib/templates/entities/entity-col-boolean.eta +1 -1
- package/dist/lib/templates/entities/entity-col-bytea.eta +1 -1
- package/dist/lib/templates/entities/entity-col-enum.eta +3 -2
- package/dist/lib/templates/entities/entity-col-interval.eta +1 -1
- package/dist/lib/templates/entities/entity-col-time.eta +1 -1
- package/dist/lib/templates/entities/entity-col-timetz.eta +1 -1
- package/dist/lib/templates/entities/entity-col-uuid.eta +1 -1
- package/npm-shrinkwrap.json +40 -15
- package/oclif.manifest.json +24 -1
- package/package.json +9 -2
|
@@ -732,13 +732,11 @@ class McpServe extends base_command_1.default {
|
|
|
732
732
|
],
|
|
733
733
|
};
|
|
734
734
|
}
|
|
735
|
-
// File the issue
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
timeout: 30000,
|
|
741
|
-
}).trim();
|
|
735
|
+
// File the issue. fileIssue passes the title as a discrete argv
|
|
736
|
+
// element and the body via a temp file (execFile, shell: false), so
|
|
737
|
+
// backticks / $() / quotes in user-supplied content are never
|
|
738
|
+
// shell-evaluated (no command injection).
|
|
739
|
+
const url = (0, runner_1.fileIssue)(title, body);
|
|
742
740
|
return {
|
|
743
741
|
content: [
|
|
744
742
|
{
|
|
@@ -14,6 +14,14 @@ export declare function formatFindings(findings: DiagnosticFinding[]): string;
|
|
|
14
14
|
* Check if the GitHub CLI is installed and authenticated.
|
|
15
15
|
*/
|
|
16
16
|
export declare function isGhAvailable(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Build the argv array for `gh issue list --search`.
|
|
19
|
+
*
|
|
20
|
+
* Pure function (no side effects) so it can be unit-tested. The search query
|
|
21
|
+
* is returned as its own array element and is NEVER concatenated into a shell
|
|
22
|
+
* string, so backticks / quotes / `$()` in the title are treated literally.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildIssueSearchArgs(title: string): string[];
|
|
17
25
|
/**
|
|
18
26
|
* Search for existing issues that might duplicate what we're about to file.
|
|
19
27
|
*/
|
|
@@ -22,6 +30,27 @@ export declare function searchExistingIssues(title: string): {
|
|
|
22
30
|
title: string;
|
|
23
31
|
url: string;
|
|
24
32
|
}[];
|
|
33
|
+
/**
|
|
34
|
+
* Build the argv array for `gh issue create`.
|
|
35
|
+
*
|
|
36
|
+
* Pure function (no side effects) so it can be unit-tested. The title is
|
|
37
|
+
* returned as its own array element directly after `--title` and the body is
|
|
38
|
+
* passed via `--body-file <path>`. Nothing is concatenated into a shell string,
|
|
39
|
+
* so backticks / `$()` / quotes / newlines in the title are passed literally
|
|
40
|
+
* (no command substitution, no injection).
|
|
41
|
+
*/
|
|
42
|
+
export declare function buildIssueCreateArgs(title: string, bodyFilePath: string): string[];
|
|
43
|
+
/**
|
|
44
|
+
* File a GitHub issue with an arbitrary title and body.
|
|
45
|
+
*
|
|
46
|
+
* The body is written to a temp file and passed via `--body-file`, and the
|
|
47
|
+
* title is passed as a discrete argv element via execFile (shell: false). The
|
|
48
|
+
* child's stdin is explicitly not inherited from the parent so it cannot
|
|
49
|
+
* consume / blank the body.
|
|
50
|
+
*
|
|
51
|
+
* Returns the URL of the created issue.
|
|
52
|
+
*/
|
|
53
|
+
export declare function fileIssue(title: string, body: string): string;
|
|
25
54
|
/**
|
|
26
55
|
* Build and file a GitHub issue from diagnostic findings.
|
|
27
56
|
* Returns the URL of the created issue.
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fileGitHubIssue = exports.searchExistingIssues = exports.isGhAvailable = exports.formatFindings = exports.runDiagnostics = void 0;
|
|
3
|
+
exports.fileGitHubIssue = exports.fileIssue = exports.buildIssueCreateArgs = exports.searchExistingIssues = exports.buildIssueSearchArgs = exports.isGhAvailable = exports.formatFindings = exports.runDiagnostics = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const child_process_1 = require("child_process");
|
|
6
|
+
const fs = tslib_1.__importStar(require("fs"));
|
|
6
7
|
const os = tslib_1.__importStar(require("os"));
|
|
8
|
+
const path = tslib_1.__importStar(require("path"));
|
|
7
9
|
const checks_1 = require("./checks");
|
|
8
10
|
/**
|
|
9
11
|
* Run all diagnostic checks and return aggregated findings.
|
|
@@ -74,7 +76,8 @@ function formatFinding(f) {
|
|
|
74
76
|
*/
|
|
75
77
|
function isGhAvailable() {
|
|
76
78
|
try {
|
|
77
|
-
(
|
|
79
|
+
// execFile (shell: false) — no shell interpretation of arguments.
|
|
80
|
+
(0, child_process_1.execFileSync)("gh", ["auth", "status"], { stdio: "ignore" });
|
|
78
81
|
return true;
|
|
79
82
|
}
|
|
80
83
|
catch {
|
|
@@ -82,14 +85,47 @@ function isGhAvailable() {
|
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
87
|
exports.isGhAvailable = isGhAvailable;
|
|
88
|
+
/**
|
|
89
|
+
* The GitHub repository issues are filed against.
|
|
90
|
+
*/
|
|
91
|
+
const ISSUE_REPO = "apsoai/cli";
|
|
92
|
+
/**
|
|
93
|
+
* Build the argv array for `gh issue list --search`.
|
|
94
|
+
*
|
|
95
|
+
* Pure function (no side effects) so it can be unit-tested. The search query
|
|
96
|
+
* is returned as its own array element and is NEVER concatenated into a shell
|
|
97
|
+
* string, so backticks / quotes / `$()` in the title are treated literally.
|
|
98
|
+
*/
|
|
99
|
+
function buildIssueSearchArgs(title) {
|
|
100
|
+
// Extract key terms from the title for search (passed as a single argv arg).
|
|
101
|
+
const searchQuery = title.slice(0, 100);
|
|
102
|
+
return [
|
|
103
|
+
"issue",
|
|
104
|
+
"list",
|
|
105
|
+
"--repo",
|
|
106
|
+
ISSUE_REPO,
|
|
107
|
+
"--search",
|
|
108
|
+
searchQuery,
|
|
109
|
+
"--state",
|
|
110
|
+
"open",
|
|
111
|
+
"--json",
|
|
112
|
+
"number,title,url",
|
|
113
|
+
"--limit",
|
|
114
|
+
"5",
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
exports.buildIssueSearchArgs = buildIssueSearchArgs;
|
|
85
118
|
/**
|
|
86
119
|
* Search for existing issues that might duplicate what we're about to file.
|
|
87
120
|
*/
|
|
88
121
|
function searchExistingIssues(title) {
|
|
89
122
|
try {
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
const result = (0, child_process_1.
|
|
123
|
+
// execFile with an args array (shell: false). The title is passed as a
|
|
124
|
+
// distinct argv element, so it is never shell-evaluated.
|
|
125
|
+
const result = (0, child_process_1.execFileSync)("gh", buildIssueSearchArgs(title), {
|
|
126
|
+
encoding: "utf-8",
|
|
127
|
+
timeout: 15000,
|
|
128
|
+
});
|
|
93
129
|
return JSON.parse(result);
|
|
94
130
|
}
|
|
95
131
|
catch {
|
|
@@ -97,6 +133,56 @@ function searchExistingIssues(title) {
|
|
|
97
133
|
}
|
|
98
134
|
}
|
|
99
135
|
exports.searchExistingIssues = searchExistingIssues;
|
|
136
|
+
/**
|
|
137
|
+
* Build the argv array for `gh issue create`.
|
|
138
|
+
*
|
|
139
|
+
* Pure function (no side effects) so it can be unit-tested. The title is
|
|
140
|
+
* returned as its own array element directly after `--title` and the body is
|
|
141
|
+
* passed via `--body-file <path>`. Nothing is concatenated into a shell string,
|
|
142
|
+
* so backticks / `$()` / quotes / newlines in the title are passed literally
|
|
143
|
+
* (no command substitution, no injection).
|
|
144
|
+
*/
|
|
145
|
+
function buildIssueCreateArgs(title, bodyFilePath) {
|
|
146
|
+
return [
|
|
147
|
+
"issue",
|
|
148
|
+
"create",
|
|
149
|
+
"--repo",
|
|
150
|
+
ISSUE_REPO,
|
|
151
|
+
"--title",
|
|
152
|
+
title,
|
|
153
|
+
"--body-file",
|
|
154
|
+
bodyFilePath,
|
|
155
|
+
];
|
|
156
|
+
}
|
|
157
|
+
exports.buildIssueCreateArgs = buildIssueCreateArgs;
|
|
158
|
+
/**
|
|
159
|
+
* File a GitHub issue with an arbitrary title and body.
|
|
160
|
+
*
|
|
161
|
+
* The body is written to a temp file and passed via `--body-file`, and the
|
|
162
|
+
* title is passed as a discrete argv element via execFile (shell: false). The
|
|
163
|
+
* child's stdin is explicitly not inherited from the parent so it cannot
|
|
164
|
+
* consume / blank the body.
|
|
165
|
+
*
|
|
166
|
+
* Returns the URL of the created issue.
|
|
167
|
+
*/
|
|
168
|
+
function fileIssue(title, body) {
|
|
169
|
+
const bodyFilePath = path.join(fs.mkdtempSync(path.join(os.tmpdir(), "apso-issue-")), "body.md");
|
|
170
|
+
try {
|
|
171
|
+
fs.writeFileSync(bodyFilePath, body, "utf-8");
|
|
172
|
+
const result = (0, child_process_1.execFileSync)("gh", buildIssueCreateArgs(title, bodyFilePath), {
|
|
173
|
+
encoding: "utf-8",
|
|
174
|
+
timeout: 30000,
|
|
175
|
+
// Do not pipe the parent's stdin into the child (the body is supplied via
|
|
176
|
+
// file). stdout/stderr are captured by execFileSync.
|
|
177
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
178
|
+
});
|
|
179
|
+
return result.trim();
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
fs.rmSync(path.dirname(bodyFilePath), { recursive: true, force: true });
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.fileIssue = fileIssue;
|
|
100
186
|
/**
|
|
101
187
|
* Build and file a GitHub issue from diagnostic findings.
|
|
102
188
|
* Returns the URL of the created issue.
|
|
@@ -105,12 +191,7 @@ function fileGitHubIssue(findings, ctx) {
|
|
|
105
191
|
const pkg = loadCliVersion();
|
|
106
192
|
const title = buildIssueTitle(findings);
|
|
107
193
|
const body = buildIssueBody(findings, ctx, pkg);
|
|
108
|
-
|
|
109
|
-
input: body,
|
|
110
|
-
encoding: "utf-8",
|
|
111
|
-
timeout: 30000,
|
|
112
|
-
});
|
|
113
|
-
return result.trim();
|
|
194
|
+
return fileIssue(title, body);
|
|
114
195
|
}
|
|
115
196
|
exports.fileGitHubIssue = fileGitHubIssue;
|
|
116
197
|
function loadCliVersion() {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
@IsOptional({ groups: [CREATE, UPDATE] })
|
|
4
4
|
@IsBoolean({ always: true })
|
|
5
5
|
|
|
6
|
-
@Column({ type: 'boolean', default: <%= Boolean(field.default) || false %> })
|
|
6
|
+
@Column({ type: 'boolean', nullable: <%= Boolean(field.nullable) %>, default: <%= Boolean(field.default) || false %> })
|
|
7
7
|
<% if (field.index ) {%>
|
|
8
8
|
@Index()
|
|
9
9
|
<% } %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% const {field} = it; %>
|
|
2
2
|
|
|
3
|
-
@Column({ "type": "bytea"
|
|
3
|
+
@Column({ "type": "bytea", nullable: <%= Boolean(field.nullable) %><% if (field.default !== null) {%>, default: <%= field.default %><% } %> })
|
|
4
4
|
<% if (field.index ) {%>
|
|
5
5
|
@Index()
|
|
6
6
|
<% } %>
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
@Column({
|
|
4
4
|
type: 'enum',
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
nullable: <%= Boolean(field.nullable) %>,
|
|
6
|
+
enum: enums.<%= field.dataType%><% if (field.default !== null) { %>,
|
|
7
|
+
default: enums.<%= field.dataType%>.<%= field.default.toLowerCase().replace(/[^a-z0-9]/g, '_').replace(/^(\d)/, '_$1').replace(/_+/g, '_').replace(/_$/, '') %><% } %>
|
|
7
8
|
})
|
|
8
9
|
<% if (field.index ) {%>
|
|
9
10
|
@Index()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% const {field} = it; %>
|
|
2
2
|
|
|
3
|
-
@Column({ "type": "interval"
|
|
3
|
+
@Column({ "type": "interval", nullable: <%= Boolean(field.nullable) %><% if (field.default !== null) {%>, default: <%= field.default %><% } %> })
|
|
4
4
|
<% if (field.index ) {%>
|
|
5
5
|
@Index()
|
|
6
6
|
<% } %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% const {field} = it; %>
|
|
2
2
|
|
|
3
|
-
@Column({ "type": "time"
|
|
3
|
+
@Column({ "type": "time", nullable: <%= Boolean(field.nullable) %><% if (field.default !== null) {%>, default: <%= field.default %><% } %> })
|
|
4
4
|
<% if (field.index ) {%>
|
|
5
5
|
@Index()
|
|
6
6
|
<% } %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% const {field} = it; %>
|
|
2
2
|
|
|
3
|
-
@Column({ "type": "timetz"
|
|
3
|
+
@Column({ "type": "timetz", nullable: <%= Boolean(field.nullable) %><% if (field.default !== null) {%>, default: <%= field.default %><% } %> })
|
|
4
4
|
<% if (field.index ) {%>
|
|
5
5
|
@Index()
|
|
6
6
|
<% } %>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<% if (field.primary ) {%>
|
|
4
4
|
@PrimaryGeneratedColumn('uuid')
|
|
5
5
|
<% } else { %>
|
|
6
|
-
@Column({ "type": "uuid"
|
|
6
|
+
@Column({ "type": "uuid", nullable: <%= Boolean(field.nullable) %><% if (field.default !== null) {%>, default: <%= field.default %><% } %> })
|
|
7
7
|
<% if (field.index ) {%>
|
|
8
8
|
@Index()
|
|
9
9
|
<% } %>
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apso/cli",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@apso/cli",
|
|
9
|
-
"version": "0.15.
|
|
9
|
+
"version": "0.15.3",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@electric-sql/pglite": "^0.2.17",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"@oclif/core": "^2",
|
|
15
15
|
"@oclif/plugin-help": "^5",
|
|
16
16
|
"@oclif/plugin-plugins": "^3",
|
|
17
|
+
"@oclif/plugin-warn-if-update-available": "^2.1.1",
|
|
17
18
|
"debug": "^4.3.4",
|
|
18
19
|
"eta": "^2.0.0",
|
|
19
20
|
"inquirer": "^8.2.7",
|
|
@@ -1752,9 +1753,10 @@
|
|
|
1752
1753
|
}
|
|
1753
1754
|
},
|
|
1754
1755
|
"node_modules/@oclif/core": {
|
|
1755
|
-
"version": "2.
|
|
1756
|
-
"resolved": "https://registry.npmjs.org/@oclif/core/-/core-2.
|
|
1757
|
-
"integrity": "sha512
|
|
1756
|
+
"version": "2.16.0",
|
|
1757
|
+
"resolved": "https://registry.npmjs.org/@oclif/core/-/core-2.16.0.tgz",
|
|
1758
|
+
"integrity": "sha512-dL6atBH0zCZl1A1IXCKJgLPrM/wR7K+Wi401E/IvqsK8m2iCHW+0TEOGrans/cuN3oTW+uxIyJFHJ8Im0k4qBw==",
|
|
1759
|
+
"license": "MIT",
|
|
1758
1760
|
"dependencies": {
|
|
1759
1761
|
"@types/cli-progress": "^3.11.0",
|
|
1760
1762
|
"ansi-escapes": "^4.3.2",
|
|
@@ -1765,7 +1767,6 @@
|
|
|
1765
1767
|
"cli-progress": "^3.12.0",
|
|
1766
1768
|
"debug": "^4.3.4",
|
|
1767
1769
|
"ejs": "^3.1.8",
|
|
1768
|
-
"fs-extra": "^9.1.0",
|
|
1769
1770
|
"get-package-type": "^0.1.0",
|
|
1770
1771
|
"globby": "^11.1.0",
|
|
1771
1772
|
"hyperlinker": "^1.0.0",
|
|
@@ -1775,7 +1776,6 @@
|
|
|
1775
1776
|
"natural-orderby": "^2.0.3",
|
|
1776
1777
|
"object-treeify": "^1.1.33",
|
|
1777
1778
|
"password-prompt": "^1.1.2",
|
|
1778
|
-
"semver": "^7.5.3",
|
|
1779
1779
|
"slice-ansi": "^4.0.0",
|
|
1780
1780
|
"string-width": "^4.2.3",
|
|
1781
1781
|
"strip-ansi": "^6.0.1",
|
|
@@ -1841,18 +1841,17 @@
|
|
|
1841
1841
|
}
|
|
1842
1842
|
},
|
|
1843
1843
|
"node_modules/@oclif/plugin-warn-if-update-available": {
|
|
1844
|
-
"version": "2.
|
|
1845
|
-
"resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-2.
|
|
1846
|
-
"integrity": "sha512-
|
|
1847
|
-
"
|
|
1844
|
+
"version": "2.1.1",
|
|
1845
|
+
"resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-2.1.1.tgz",
|
|
1846
|
+
"integrity": "sha512-y7eSzT6R5bmTIJbiMMXgOlbBpcWXGlVhNeQJBLBCCy1+90Wbjyqf6uvY0i2WcO4sh/THTJ20qCW80j3XUlgDTA==",
|
|
1847
|
+
"license": "MIT",
|
|
1848
1848
|
"dependencies": {
|
|
1849
|
-
"@oclif/core": "^2.
|
|
1849
|
+
"@oclif/core": "^2.15.0",
|
|
1850
1850
|
"chalk": "^4.1.0",
|
|
1851
1851
|
"debug": "^4.1.0",
|
|
1852
|
-
"fs-extra": "^9.0.1",
|
|
1853
1852
|
"http-call": "^5.2.2",
|
|
1854
|
-
"lodash": "^4.
|
|
1855
|
-
"semver": "^7.5.
|
|
1853
|
+
"lodash.template": "^4.5.0",
|
|
1854
|
+
"semver": "^7.5.4"
|
|
1856
1855
|
},
|
|
1857
1856
|
"engines": {
|
|
1858
1857
|
"node": ">=12.0.0"
|
|
@@ -8334,6 +8333,12 @@
|
|
|
8334
8333
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
|
8335
8334
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
|
8336
8335
|
},
|
|
8336
|
+
"node_modules/lodash._reinterpolate": {
|
|
8337
|
+
"version": "3.0.0",
|
|
8338
|
+
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
|
|
8339
|
+
"integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
|
|
8340
|
+
"license": "MIT"
|
|
8341
|
+
},
|
|
8337
8342
|
"node_modules/lodash.memoize": {
|
|
8338
8343
|
"version": "4.1.2",
|
|
8339
8344
|
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
|
@@ -8346,6 +8351,26 @@
|
|
|
8346
8351
|
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
|
8347
8352
|
"dev": true
|
|
8348
8353
|
},
|
|
8354
|
+
"node_modules/lodash.template": {
|
|
8355
|
+
"version": "4.18.1",
|
|
8356
|
+
"resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.18.1.tgz",
|
|
8357
|
+
"integrity": "sha512-5urZrLnV/VD6zHK5KsVtZgt7H19v51mIzoS0aBNH8yp3I8tbswrEjOABOPY8m8uB7NuibubLrMX+Y0PXsU9X+w==",
|
|
8358
|
+
"deprecated": "This package is deprecated. Use https://socket.dev/npm/package/eta instead.",
|
|
8359
|
+
"license": "MIT",
|
|
8360
|
+
"dependencies": {
|
|
8361
|
+
"lodash._reinterpolate": "^3.0.0",
|
|
8362
|
+
"lodash.templatesettings": "^4.0.0"
|
|
8363
|
+
}
|
|
8364
|
+
},
|
|
8365
|
+
"node_modules/lodash.templatesettings": {
|
|
8366
|
+
"version": "4.2.0",
|
|
8367
|
+
"resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
|
|
8368
|
+
"integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
|
|
8369
|
+
"license": "MIT",
|
|
8370
|
+
"dependencies": {
|
|
8371
|
+
"lodash._reinterpolate": "^3.0.0"
|
|
8372
|
+
}
|
|
8373
|
+
},
|
|
8349
8374
|
"node_modules/lodash.truncate": {
|
|
8350
8375
|
"version": "4.4.2",
|
|
8351
8376
|
"resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
|
package/oclif.manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.15.
|
|
2
|
+
"version": "0.15.3",
|
|
3
3
|
"commands": {
|
|
4
4
|
"config": {
|
|
5
5
|
"id": "config",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"pluginAlias": "@apso/cli",
|
|
10
10
|
"pluginType": "core",
|
|
11
11
|
"aliases": [],
|
|
12
|
+
"hiddenAliases": [],
|
|
12
13
|
"examples": [
|
|
13
14
|
"$ apso config",
|
|
14
15
|
"$ apso config get apiUrl",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"pluginAlias": "@apso/cli",
|
|
43
44
|
"pluginType": "core",
|
|
44
45
|
"aliases": [],
|
|
46
|
+
"hiddenAliases": [],
|
|
45
47
|
"examples": [
|
|
46
48
|
"$ apso deploy",
|
|
47
49
|
"$ apso deploy --yes",
|
|
@@ -79,6 +81,7 @@
|
|
|
79
81
|
"pluginAlias": "@apso/cli",
|
|
80
82
|
"pluginType": "core",
|
|
81
83
|
"aliases": [],
|
|
84
|
+
"hiddenAliases": [],
|
|
82
85
|
"examples": [
|
|
83
86
|
"$ apso dev",
|
|
84
87
|
"$ apso dev --docker",
|
|
@@ -115,6 +118,7 @@
|
|
|
115
118
|
"pluginAlias": "@apso/cli",
|
|
116
119
|
"pluginType": "core",
|
|
117
120
|
"aliases": [],
|
|
121
|
+
"hiddenAliases": [],
|
|
118
122
|
"examples": [
|
|
119
123
|
"$ apso doctor",
|
|
120
124
|
"$ apso doctor --json",
|
|
@@ -144,6 +148,7 @@
|
|
|
144
148
|
"pluginAlias": "@apso/cli",
|
|
145
149
|
"pluginType": "core",
|
|
146
150
|
"aliases": [],
|
|
151
|
+
"hiddenAliases": [],
|
|
147
152
|
"examples": [
|
|
148
153
|
"$ apso generate",
|
|
149
154
|
"$ apso generate --skip-format",
|
|
@@ -188,6 +193,7 @@
|
|
|
188
193
|
"pluginAlias": "@apso/cli",
|
|
189
194
|
"pluginType": "core",
|
|
190
195
|
"aliases": [],
|
|
196
|
+
"hiddenAliases": [],
|
|
191
197
|
"examples": [
|
|
192
198
|
"$ apso init",
|
|
193
199
|
"$ apso init --name my-app --language typescript",
|
|
@@ -230,6 +236,7 @@
|
|
|
230
236
|
"pluginAlias": "@apso/cli",
|
|
231
237
|
"pluginType": "core",
|
|
232
238
|
"aliases": [],
|
|
239
|
+
"hiddenAliases": [],
|
|
233
240
|
"examples": [
|
|
234
241
|
"$ apso link",
|
|
235
242
|
"$ apso link --workspace my-team --service my-api",
|
|
@@ -268,6 +275,7 @@
|
|
|
268
275
|
"pluginAlias": "@apso/cli",
|
|
269
276
|
"pluginType": "core",
|
|
270
277
|
"aliases": [],
|
|
278
|
+
"hiddenAliases": [],
|
|
271
279
|
"examples": [
|
|
272
280
|
"$ apso login",
|
|
273
281
|
"$ apso login --token <api-token>"
|
|
@@ -298,6 +306,7 @@
|
|
|
298
306
|
"pluginAlias": "@apso/cli",
|
|
299
307
|
"pluginType": "core",
|
|
300
308
|
"aliases": [],
|
|
309
|
+
"hiddenAliases": [],
|
|
301
310
|
"examples": [
|
|
302
311
|
"$ apso logout"
|
|
303
312
|
],
|
|
@@ -320,6 +329,7 @@
|
|
|
320
329
|
"pluginAlias": "@apso/cli",
|
|
321
330
|
"pluginType": "core",
|
|
322
331
|
"aliases": [],
|
|
332
|
+
"hiddenAliases": [],
|
|
323
333
|
"examples": [
|
|
324
334
|
"$ apso logs",
|
|
325
335
|
"$ apso logs <build-id>"
|
|
@@ -341,6 +351,7 @@
|
|
|
341
351
|
"pluginAlias": "@apso/cli",
|
|
342
352
|
"pluginType": "core",
|
|
343
353
|
"aliases": [],
|
|
354
|
+
"hiddenAliases": [],
|
|
344
355
|
"examples": [
|
|
345
356
|
"$ apso migrate",
|
|
346
357
|
"$ apso migrate --apply",
|
|
@@ -377,6 +388,7 @@
|
|
|
377
388
|
"pluginAlias": "@apso/cli",
|
|
378
389
|
"pluginType": "core",
|
|
379
390
|
"aliases": [],
|
|
391
|
+
"hiddenAliases": [],
|
|
380
392
|
"examples": [
|
|
381
393
|
"$ apso open",
|
|
382
394
|
"$ apso open --endpoint",
|
|
@@ -408,6 +420,7 @@
|
|
|
408
420
|
"pluginAlias": "@apso/cli",
|
|
409
421
|
"pluginType": "core",
|
|
410
422
|
"aliases": [],
|
|
423
|
+
"hiddenAliases": [],
|
|
411
424
|
"examples": [
|
|
412
425
|
"$ apso projects",
|
|
413
426
|
"$ apso projects --workspace my-team",
|
|
@@ -438,6 +451,7 @@
|
|
|
438
451
|
"pluginAlias": "@apso/cli",
|
|
439
452
|
"pluginType": "core",
|
|
440
453
|
"aliases": [],
|
|
454
|
+
"hiddenAliases": [],
|
|
441
455
|
"examples": [
|
|
442
456
|
"$ apso status"
|
|
443
457
|
],
|
|
@@ -452,6 +466,7 @@
|
|
|
452
466
|
"pluginAlias": "@apso/cli",
|
|
453
467
|
"pluginType": "core",
|
|
454
468
|
"aliases": [],
|
|
469
|
+
"hiddenAliases": [],
|
|
455
470
|
"examples": [
|
|
456
471
|
"$ apso unlink",
|
|
457
472
|
"$ apso unlink --yes"
|
|
@@ -475,6 +490,7 @@
|
|
|
475
490
|
"pluginAlias": "@apso/cli",
|
|
476
491
|
"pluginType": "core",
|
|
477
492
|
"aliases": [],
|
|
493
|
+
"hiddenAliases": [],
|
|
478
494
|
"examples": [
|
|
479
495
|
"$ apso whoami",
|
|
480
496
|
"$ apso whoami --json"
|
|
@@ -504,6 +520,7 @@
|
|
|
504
520
|
"pluginAlias": "@apso/cli",
|
|
505
521
|
"pluginType": "core",
|
|
506
522
|
"aliases": [],
|
|
523
|
+
"hiddenAliases": [],
|
|
507
524
|
"examples": [
|
|
508
525
|
"$ apso mcp serve",
|
|
509
526
|
"# In Claude Code settings:",
|
|
@@ -528,6 +545,7 @@
|
|
|
528
545
|
"pluginAlias": "@apso/cli",
|
|
529
546
|
"pluginType": "core",
|
|
530
547
|
"aliases": [],
|
|
548
|
+
"hiddenAliases": [],
|
|
531
549
|
"examples": [
|
|
532
550
|
"$ apso schema diff"
|
|
533
551
|
],
|
|
@@ -542,6 +560,7 @@
|
|
|
542
560
|
"pluginAlias": "@apso/cli",
|
|
543
561
|
"pluginType": "core",
|
|
544
562
|
"aliases": [],
|
|
563
|
+
"hiddenAliases": [],
|
|
545
564
|
"examples": [
|
|
546
565
|
"$ apso schema pull",
|
|
547
566
|
"$ apso schema pull --yes"
|
|
@@ -565,6 +584,7 @@
|
|
|
565
584
|
"pluginAlias": "@apso/cli",
|
|
566
585
|
"pluginType": "core",
|
|
567
586
|
"aliases": [],
|
|
587
|
+
"hiddenAliases": [],
|
|
568
588
|
"examples": [
|
|
569
589
|
"$ apso schema push",
|
|
570
590
|
"$ apso schema push --yes"
|
|
@@ -588,6 +608,7 @@
|
|
|
588
608
|
"pluginAlias": "@apso/cli",
|
|
589
609
|
"pluginType": "core",
|
|
590
610
|
"aliases": [],
|
|
611
|
+
"hiddenAliases": [],
|
|
591
612
|
"examples": [
|
|
592
613
|
"$ apso schema validate",
|
|
593
614
|
"$ apso schema validate --local"
|
|
@@ -611,6 +632,7 @@
|
|
|
611
632
|
"pluginType": "core",
|
|
612
633
|
"hidden": true,
|
|
613
634
|
"aliases": [],
|
|
635
|
+
"hiddenAliases": [],
|
|
614
636
|
"examples": [
|
|
615
637
|
"$ apso init"
|
|
616
638
|
],
|
|
@@ -626,6 +648,7 @@
|
|
|
626
648
|
"pluginType": "core",
|
|
627
649
|
"hidden": true,
|
|
628
650
|
"aliases": [],
|
|
651
|
+
"hiddenAliases": [],
|
|
629
652
|
"examples": [
|
|
630
653
|
"$ apso generate"
|
|
631
654
|
],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apso/cli",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.3",
|
|
4
4
|
"mcpName": "io.github.apsoai/apso",
|
|
5
5
|
"description": "Apso CLI",
|
|
6
6
|
"author": "Apso by Mavric - @mavric",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"@oclif/core": "^2",
|
|
30
30
|
"@oclif/plugin-help": "^5",
|
|
31
31
|
"@oclif/plugin-plugins": "^3",
|
|
32
|
+
"@oclif/plugin-warn-if-update-available": "^2.1.1",
|
|
32
33
|
"debug": "^4.3.4",
|
|
33
34
|
"eta": "^2.0.0",
|
|
34
35
|
"inquirer": "^8.2.7",
|
|
@@ -74,8 +75,14 @@
|
|
|
74
75
|
"commands": "./dist/commands",
|
|
75
76
|
"plugins": [
|
|
76
77
|
"@oclif/plugin-help",
|
|
77
|
-
"@oclif/plugin-plugins"
|
|
78
|
+
"@oclif/plugin-plugins",
|
|
79
|
+
"@oclif/plugin-warn-if-update-available"
|
|
78
80
|
],
|
|
81
|
+
"warn-if-update-available": {
|
|
82
|
+
"timeoutInDays": 1,
|
|
83
|
+
"registry": "https://registry.npmjs.org",
|
|
84
|
+
"message": "<%= config.name %> update available: <%= chalk.dim(config.version) %> → <%= chalk.greenBright(latest) %>. Run <%= chalk.cyan('npm i -g @apso/cli') %> to update."
|
|
85
|
+
},
|
|
79
86
|
"topicSeparator": " ",
|
|
80
87
|
"topics": {
|
|
81
88
|
"server": {
|