asyar-sdk 1.0.2 → 1.2.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.
Files changed (84) hide show
  1. package/README.md +75 -30
  2. package/dist/ExtensionContext.d.ts +2 -1
  3. package/dist/ExtensionContext.d.ts.map +1 -1
  4. package/dist/ExtensionContext.js +1 -1
  5. package/dist/ExtensionContext.js.map +1 -1
  6. package/dist/cli/commands/build.js +1 -1
  7. package/dist/cli/commands/build.js.map +1 -1
  8. package/dist/cli/commands/doctor.d.ts +3 -0
  9. package/dist/cli/commands/doctor.d.ts.map +1 -0
  10. package/dist/cli/commands/doctor.js +245 -0
  11. package/dist/cli/commands/doctor.js.map +1 -0
  12. package/dist/cli/commands/publish.d.ts.map +1 -1
  13. package/dist/cli/commands/publish.js +58 -6
  14. package/dist/cli/commands/publish.js.map +1 -1
  15. package/dist/cli/index.js +6 -1
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/lib/store.d.ts.map +1 -1
  18. package/dist/cli/lib/store.js +10 -1
  19. package/dist/cli/lib/store.js.map +1 -1
  20. package/dist/cli/lib/zip.d.ts +1 -0
  21. package/dist/cli/lib/zip.d.ts.map +1 -1
  22. package/dist/cli/lib/zip.js +7 -1
  23. package/dist/cli/lib/zip.js.map +1 -1
  24. package/dist/index.d.ts +2 -3
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -4
  27. package/dist/index.js.map +1 -1
  28. package/dist/services/ActionServiceProxy.d.ts +2 -5
  29. package/dist/services/ActionServiceProxy.d.ts.map +1 -1
  30. package/dist/services/ActionServiceProxy.js +3 -10
  31. package/dist/services/ActionServiceProxy.js.map +1 -1
  32. package/dist/services/BaseServiceProxy.d.ts +15 -0
  33. package/dist/services/BaseServiceProxy.d.ts.map +1 -0
  34. package/dist/services/BaseServiceProxy.js +25 -0
  35. package/dist/services/BaseServiceProxy.js.map +1 -0
  36. package/dist/services/ClipboardHistoryServiceProxy.d.ts +2 -5
  37. package/dist/services/ClipboardHistoryServiceProxy.d.ts.map +1 -1
  38. package/dist/services/ClipboardHistoryServiceProxy.js +2 -20
  39. package/dist/services/ClipboardHistoryServiceProxy.js.map +1 -1
  40. package/dist/services/CommandServiceProxy.d.ts +2 -5
  41. package/dist/services/CommandServiceProxy.d.ts.map +1 -1
  42. package/dist/services/CommandServiceProxy.js +2 -15
  43. package/dist/services/CommandServiceProxy.js.map +1 -1
  44. package/dist/services/ExtensionManagerProxy.d.ts +3 -5
  45. package/dist/services/ExtensionManagerProxy.d.ts.map +1 -1
  46. package/dist/services/ExtensionManagerProxy.js +6 -23
  47. package/dist/services/ExtensionManagerProxy.js.map +1 -1
  48. package/dist/services/IExtensionManager.d.ts +6 -1
  49. package/dist/services/IExtensionManager.d.ts.map +1 -1
  50. package/dist/services/ISettingsService.d.ts +22 -0
  51. package/dist/services/ISettingsService.d.ts.map +1 -0
  52. package/dist/services/ISettingsService.js +3 -0
  53. package/dist/services/ISettingsService.js.map +1 -0
  54. package/dist/services/LogServiceProxy.d.ts +2 -5
  55. package/dist/services/LogServiceProxy.d.ts.map +1 -1
  56. package/dist/services/LogServiceProxy.js +2 -11
  57. package/dist/services/LogServiceProxy.js.map +1 -1
  58. package/dist/services/NetworkServiceProxy.d.ts +2 -5
  59. package/dist/services/NetworkServiceProxy.d.ts.map +1 -1
  60. package/dist/services/NetworkServiceProxy.js +2 -13
  61. package/dist/services/NetworkServiceProxy.js.map +1 -1
  62. package/dist/services/NotificationServiceProxy.d.ts +2 -5
  63. package/dist/services/NotificationServiceProxy.d.ts.map +1 -1
  64. package/dist/services/NotificationServiceProxy.js +2 -11
  65. package/dist/services/NotificationServiceProxy.js.map +1 -1
  66. package/dist/services/SettingsServiceProxy.d.ts +8 -0
  67. package/dist/services/SettingsServiceProxy.d.ts.map +1 -0
  68. package/dist/services/SettingsServiceProxy.js +39 -0
  69. package/dist/services/SettingsServiceProxy.js.map +1 -0
  70. package/dist/services/StatusBarServiceProxy.d.ts +2 -5
  71. package/dist/services/StatusBarServiceProxy.d.ts.map +1 -1
  72. package/dist/services/StatusBarServiceProxy.js +2 -12
  73. package/dist/services/StatusBarServiceProxy.js.map +1 -1
  74. package/dist/services/index.d.ts +3 -0
  75. package/dist/services/index.d.ts.map +1 -1
  76. package/dist/services/index.js +5 -1
  77. package/dist/services/index.js.map +1 -1
  78. package/dist/types/ExtensionType.d.ts +1 -0
  79. package/dist/types/ExtensionType.d.ts.map +1 -1
  80. package/package.json +2 -2
  81. package/dist/components/index.d.ts +0 -8
  82. package/dist/components/index.d.ts.map +0 -1
  83. package/dist/components/index.js +0 -25
  84. package/dist/components/index.js.map +0 -1
package/README.md CHANGED
@@ -1,34 +1,91 @@
1
- # Asyar API SDK
1
+ # Asyar SDK
2
2
 
3
- This package (`asyar-sdk`) provides the Software Development Kit (SDK) for building extensions for the [Asyar application](https://github.com/Xoshbin/asyar). It defines the core interfaces, types, and services that extensions interact with.
3
+ This package (`asyar-sdk`) provides the Software Development Kit (SDK) for building extensions for the [Asyar Launcher](https://github.com/Xoshbin/asyar-launcher). It defines the core interfaces, types, and services that extensions interact with.
4
4
 
5
5
  ## Purpose
6
6
 
7
- The Asyar API enables developers to create extensions that integrate seamlessly with the Asyar core application. It provides access to essential services like logging, extension management, action handling, clipboard history, and notifications.
7
+ The Asyar SDK enables developers to create extensions that integrate seamlessly with the Asyar core application. It provides access to essential services like logging, extension management, action handling, clipboard history, and notifications.
8
8
 
9
- ## Installation
9
+ ## For Extension Developers
10
10
 
11
- To install the necessary dependencies for development or usage within the main Asyar project, use pnpm:
11
+ Install the SDK as a dependency in your extension project:
12
12
 
13
13
  ```bash
14
- pnpm install
14
+ npm install -g asyar-sdk # installs the CLI globally
15
15
  ```
16
16
 
17
- ## Building
17
+ Or add it to your project:
18
18
 
19
- To compile the TypeScript source code into JavaScript, run the build script:
19
+ ```bash
20
+ pnpm add asyar-sdk
21
+ ```
22
+
23
+ ### CLI Commands
24
+
25
+ The `asyar` CLI drives the full extension development workflow:
26
+
27
+ | Command | Description |
28
+ |---------|-------------|
29
+ | `asyar dev` | Start development mode with hot reload |
30
+ | `asyar build` | Production build of your extension |
31
+ | `asyar validate` | Check manifest and project structure |
32
+ | `asyar link` | Symlink your extension into the app's extensions directory |
33
+ | `asyar publish` | Build, package, and publish to the Asyar Store |
34
+ | `asyar doctor` | Diagnose environment issues |
35
+ | `asyar --version` | Show CLI version |
36
+
37
+ ### Pre-Publish Safety
38
+
39
+ The `publish` command includes automatic guards:
40
+ - **Stale build detection** — blocks publishing if source files are newer than the build output
41
+ - **Duplicate version check** — blocks publishing if the version is already live in the store
42
+
43
+ ## For Core Developers
44
+
45
+ If you are contributing to the SDK itself, use the workspace setup described in the [Asyar README](https://github.com/Xoshbin/asyar#development-setup).
46
+
47
+ ### Building
48
+
49
+ The SDK has two build targets — the **library** (types/interfaces for extensions) and the **CLI** (developer tools):
20
50
 
21
51
  ```bash
22
- pnpm run build
52
+ pnpm run build # library only (tsconfig.json → dist/)
53
+ pnpm run build:cli # CLI only (tsconfig.cli.json → dist/cli/)
54
+ pnpm run build:all # both (recommended)
55
+ ```
56
+
57
+ The `prepare` script runs `build:all` automatically on `pnpm install`, so the CLI is always compiled when dependencies are installed.
58
+
59
+ ### Workspace Integration
60
+
61
+ When used inside the recommended workspace layout, the SDK is symlinked into sibling packages:
62
+
63
+ ```
64
+ Asyar-Project/
65
+ ├── asyar/ → asyar/node_modules/asyar-sdk symlinks here
66
+ ├── asyar-sdk/ → you are here
67
+ └── extensions/ → extensions/*/node_modules/asyar-sdk symlinks here
23
68
  ```
24
69
 
25
- This will generate the output files in the `dist/` directory as specified in `tsconfig.json`.
70
+ After editing SDK source, run `pnpm run build:all` changes are instantly available to all linked packages. No manual copying needed.
71
+
72
+ ### Releasing to npm
73
+
74
+ ```bash
75
+ node scripts/release.js patch # or: minor, major
76
+ ```
77
+
78
+ This bumps the version in `package.json`, commits, tags, and pushes. It also updates the SDK version fallback in the Asyar app (if present as a sibling repo). Then publish to npm:
79
+
80
+ ```bash
81
+ pnpm publish
82
+ ```
26
83
 
27
84
  ## Usage
28
85
 
29
86
  This SDK is the bridge allowing Asyar extensions to interact with the Host Application. It dynamically adapts its behavior based on the execution context of the extension utilizing it.
30
87
 
31
- Refer to the main [Asyar Architecture Guide](../../docs/extension-architecture.md) for detailed instructions on building extensions.
88
+ Refer to the [Extension Development Guide](https://github.com/Xoshbin/asyar-launcher/blob/main/docs/extension-development.md) for detailed instructions on building extensions.
32
89
 
33
90
  ### Dual-Tier Architecture Support
34
91
 
@@ -105,25 +162,13 @@ Add an `icon` field to your manifest to show a branded icon next to your command
105
162
 
106
163
  ## Available Scripts
107
164
 
108
- The following scripts are available via `pnpm run <script_name>`:
109
-
110
- * `build`: Compiles the TypeScript code.
111
- * `prepare`: Automatically runs `build` before publishing.
112
- * `test`: Runs tests (requires test runner setup like Jest).
113
- * `lint`: Lints the source code (requires linter setup like ESLint).
114
- * `watch`: Compiles the code in watch mode.
115
-
116
- ## Clean Installation
117
-
118
- A utility script `clean-install.sh` is provided to completely remove build artifacts, caches, and `node_modules`, then perform a fresh installation and build.
119
-
120
- ```bash
121
- ./clean-install.sh
122
- ```
123
-
124
- ## Contributing
125
-
126
- (Add contribution guidelines if applicable)
165
+ | Script | Description |
166
+ |--------|-------------|
167
+ | `build` | Compiles the SDK library (types, interfaces, proxies) |
168
+ | `build:cli` | Compiles the CLI tool |
169
+ | `build:all` | Compiles both SDK library and CLI |
170
+ | `prepare` | Runs `build:all` automatically on install |
171
+ | `watch` | Compiles the SDK library in watch mode |
127
172
 
128
173
  ## License
129
174
 
@@ -1,6 +1,6 @@
1
1
  import { ExtensionAction } from "./types/ActionType";
2
2
  import { CommandHandler } from "./types/CommandType";
3
- import { LogServiceProxy, NotificationServiceProxy, ClipboardHistoryServiceProxy, ExtensionManagerProxy, CommandServiceProxy, ActionServiceProxy, NetworkServiceProxy, StatusBarServiceProxy } from "./services";
3
+ import { LogServiceProxy, NotificationServiceProxy, ClipboardHistoryServiceProxy, ExtensionManagerProxy, CommandServiceProxy, ActionServiceProxy, NetworkServiceProxy, SettingsServiceProxy, StatusBarServiceProxy } from "./services";
4
4
  export declare class ExtensionContext {
5
5
  private extensionId;
6
6
  readonly proxies: {
@@ -11,6 +11,7 @@ export declare class ExtensionContext {
11
11
  CommandService: CommandServiceProxy;
12
12
  ActionService: ActionServiceProxy;
13
13
  NetworkService: NetworkServiceProxy;
14
+ SettingsService: SettingsServiceProxy;
14
15
  StatusBarService: StatusBarServiceProxy;
15
16
  };
16
17
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionContext.d.ts","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAGpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAc;IAGjC,SAAgB,OAAO;;;;;;;;;MASrB;;IAMF,OAAO,CAAC,kBAAkB;IA8C1B,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;IASrC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWhC,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAa7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IASxC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAiBjE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAQ3C"}
1
+ {"version":3,"file":"ExtensionContext.d.ts","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAGpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAc;IAGjC,SAAgB,OAAO;;;;;;;;;;MAUrB;;IAMF,OAAO,CAAC,kBAAkB;IA8C1B,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;IAQrC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWhC,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAa7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IASxC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAiBjE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAQ3C"}
@@ -15,6 +15,7 @@ class ExtensionContext {
15
15
  CommandService: new services_1.CommandServiceProxy(),
16
16
  ActionService: new services_1.ActionServiceProxy(),
17
17
  NetworkService: new services_1.NetworkServiceProxy(),
18
+ SettingsService: new services_1.SettingsServiceProxy(),
18
19
  StatusBarService: new services_1.StatusBarServiceProxy(),
19
20
  };
20
21
  this.setupFocusTracking();
@@ -66,7 +67,6 @@ class ExtensionContext {
66
67
  }
67
68
  // Method to get a service by its interface name
68
69
  getService(serviceType) {
69
- console.log("Getting service:", serviceType); // Add this line
70
70
  const service = this.proxies[serviceType];
71
71
  if (!service) {
72
72
  throw new Error(`Service "${serviceType}" not registered`);
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionContext.js","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExtensionContext.js","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"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"}
@@ -75,7 +75,7 @@ function runViteBuild(cwd) {
75
75
  const spinner = (0, ora_1.default)('Building extension...').start();
76
76
  return new Promise((resolve, reject) => {
77
77
  const viteBin = path.join(cwd, 'node_modules', '.bin', 'vite');
78
- const child = (0, child_process_1.spawn)(viteBin, ['build'], { cwd, stdio: 'pipe' });
78
+ const child = (0, child_process_1.spawn)(viteBin, ['build', '--base', './'], { cwd, stdio: 'pipe', shell: true });
79
79
  let output = '';
80
80
  child.stdout.on('data', (d) => { output += d.toString(); });
81
81
  child.stderr.on('data', (d) => { output += d.toString(); });
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerDoctor(program: Command): void;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../cli/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAuFnC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QA4H9C"}
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.registerDoctor = registerDoctor;
39
+ const chalk_1 = __importDefault(require("chalk"));
40
+ const os = __importStar(require("os"));
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const child_process_1 = require("child_process");
44
+ const auth_1 = require("../lib/auth");
45
+ const platform_1 = require("../lib/platform");
46
+ /**
47
+ * Get the newest file modification time in a directory (recursive).
48
+ * Skips node_modules and .git.
49
+ */
50
+ function getNewestMtime(dir) {
51
+ let newest = 0;
52
+ if (!fs.existsSync(dir))
53
+ return 0;
54
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
55
+ const fullPath = path.join(dir, entry.name);
56
+ if (entry.isDirectory()) {
57
+ if (entry.name === 'node_modules' || entry.name === '.git' || entry.name === 'dist')
58
+ continue;
59
+ newest = Math.max(newest, getNewestMtime(fullPath));
60
+ }
61
+ else {
62
+ newest = Math.max(newest, fs.statSync(fullPath).mtimeMs);
63
+ }
64
+ }
65
+ return newest;
66
+ }
67
+ /**
68
+ * Walk up directories to find the monorepo root (has pnpm-workspace.yaml
69
+ * that includes asyar-sdk).
70
+ */
71
+ function findProjectRoot(startDir) {
72
+ let dir = path.resolve(startDir);
73
+ for (let i = 0; i < 10; i++) {
74
+ const wsFile = path.join(dir, 'pnpm-workspace.yaml');
75
+ const pkgFile = path.join(dir, 'package.json');
76
+ if (fs.existsSync(wsFile) && fs.existsSync(pkgFile)) {
77
+ try {
78
+ const pkg = JSON.parse(fs.readFileSync(pkgFile, 'utf-8'));
79
+ if (pkg.name === 'asyar-project')
80
+ return dir;
81
+ }
82
+ catch (_a) { }
83
+ }
84
+ const parent = path.dirname(dir);
85
+ if (parent === dir)
86
+ break;
87
+ dir = parent;
88
+ }
89
+ return null;
90
+ }
91
+ /**
92
+ * Find the asyar-sdk root directory by walking up from cwd.
93
+ */
94
+ function findSdkRoot(startDir) {
95
+ // Check if we're inside asyar-sdk
96
+ let dir = path.resolve(startDir);
97
+ for (let i = 0; i < 10; i++) {
98
+ const pkgFile = path.join(dir, 'package.json');
99
+ if (fs.existsSync(pkgFile)) {
100
+ try {
101
+ const pkg = JSON.parse(fs.readFileSync(pkgFile, 'utf-8'));
102
+ if (pkg.name === 'asyar-sdk')
103
+ return dir;
104
+ }
105
+ catch (_a) { }
106
+ }
107
+ const parent = path.dirname(dir);
108
+ if (parent === dir)
109
+ break;
110
+ dir = parent;
111
+ }
112
+ // Check sibling directories from project root
113
+ const projectRoot = findProjectRoot(startDir);
114
+ if (projectRoot) {
115
+ const sdkDir = path.join(projectRoot, 'asyar-sdk');
116
+ if (fs.existsSync(path.join(sdkDir, 'package.json'))) {
117
+ return sdkDir;
118
+ }
119
+ }
120
+ return null;
121
+ }
122
+ function registerDoctor(program) {
123
+ program
124
+ .command('doctor')
125
+ .description('Check environment health and diagnose common issues')
126
+ .action(() => __awaiter(this, void 0, void 0, function* () {
127
+ const results = [];
128
+ console.log(chalk_1.default.bold('\nAsyar Doctor\n'));
129
+ // 1. Platform info
130
+ console.log(` OS: ${os.platform()} ${os.arch()} (${os.release()})`);
131
+ console.log(` Node: ${process.version}`);
132
+ try {
133
+ const pnpmVer = (0, child_process_1.execSync)('pnpm --version', { stdio: 'pipe' }).toString().trim();
134
+ console.log(` pnpm: ${pnpmVer}`);
135
+ }
136
+ catch (_a) {
137
+ console.log(` pnpm: ${chalk_1.default.red('not found')}`);
138
+ results.push({ name: 'pnpm', status: 'fail', message: 'pnpm is not installed' });
139
+ }
140
+ console.log(` Store URL: ${auth_1.STORE_URL}`);
141
+ console.log();
142
+ // 2. SDK dist freshness
143
+ const sdkRoot = findSdkRoot(process.cwd());
144
+ if (sdkRoot) {
145
+ const srcTime = Math.max(getNewestMtime(path.join(sdkRoot, 'src')), getNewestMtime(path.join(sdkRoot, 'cli')));
146
+ const distDir = path.join(sdkRoot, 'dist');
147
+ if (fs.existsSync(distDir)) {
148
+ const distTime = getNewestMtime(distDir);
149
+ if (srcTime > distTime) {
150
+ results.push({
151
+ name: 'SDK build',
152
+ status: 'warn',
153
+ message: `dist/ is stale — run ${chalk_1.default.cyan('pnpm run build:all')} in asyar-sdk`
154
+ });
155
+ }
156
+ else {
157
+ results.push({ name: 'SDK build', status: 'ok', message: 'dist/ is up to date' });
158
+ }
159
+ }
160
+ else {
161
+ results.push({
162
+ name: 'SDK build',
163
+ status: 'fail',
164
+ message: `dist/ not found — run ${chalk_1.default.cyan('pnpm run build:all')} in asyar-sdk`
165
+ });
166
+ }
167
+ }
168
+ // 3. Workspace link check
169
+ const nmSdk = path.join(process.cwd(), 'node_modules', 'asyar-sdk');
170
+ if (fs.existsSync(nmSdk)) {
171
+ const stat = fs.lstatSync(nmSdk);
172
+ if (stat.isSymbolicLink()) {
173
+ const target = fs.realpathSync(nmSdk);
174
+ results.push({ name: 'SDK link', status: 'ok', message: `workspace-linked → ${target}` });
175
+ }
176
+ else {
177
+ results.push({
178
+ name: 'SDK link',
179
+ status: 'warn',
180
+ message: `installed from npm (frozen copy) — run ${chalk_1.default.cyan('pnpm install')} from monorepo root to link`
181
+ });
182
+ }
183
+ }
184
+ // 4. Extensions directory
185
+ const extDir = (0, platform_1.getExtensionsDir)();
186
+ if (fs.existsSync(extDir)) {
187
+ const entries = fs.readdirSync(extDir).filter(f => !f.startsWith('.'));
188
+ results.push({ name: 'Extensions dir', status: 'ok', message: `${extDir} (${entries.length} extensions)` });
189
+ }
190
+ else {
191
+ results.push({ name: 'Extensions dir', status: 'warn', message: `${extDir} does not exist yet` });
192
+ }
193
+ // 5. Store reachability
194
+ try {
195
+ const resp = yield fetch(`${auth_1.STORE_URL}/api/extensions?per_page=1`, {
196
+ signal: AbortSignal.timeout(5000)
197
+ });
198
+ if (resp.ok) {
199
+ results.push({ name: 'Store', status: 'ok', message: `${auth_1.STORE_URL} is reachable` });
200
+ }
201
+ else {
202
+ results.push({ name: 'Store', status: 'warn', message: `${auth_1.STORE_URL} responded with ${resp.status}` });
203
+ }
204
+ }
205
+ catch (_b) {
206
+ results.push({ name: 'Store', status: 'warn', message: `${auth_1.STORE_URL} is not reachable` });
207
+ }
208
+ // 6. Monorepo detection
209
+ const projectRoot = findProjectRoot(process.cwd());
210
+ if (projectRoot) {
211
+ results.push({ name: 'Monorepo', status: 'ok', message: `root at ${projectRoot}` });
212
+ }
213
+ else {
214
+ results.push({
215
+ name: 'Monorepo',
216
+ status: 'warn',
217
+ message: 'Not inside an Asyar monorepo — SDK uses npm version'
218
+ });
219
+ }
220
+ // Print results
221
+ for (const r of results) {
222
+ const icon = r.status === 'ok'
223
+ ? chalk_1.default.green('✓')
224
+ : r.status === 'warn'
225
+ ? chalk_1.default.yellow('⚠')
226
+ : chalk_1.default.red('✗');
227
+ console.log(` ${icon} ${chalk_1.default.bold(r.name)}: ${r.message}`);
228
+ }
229
+ const failures = results.filter(r => r.status === 'fail');
230
+ const warnings = results.filter(r => r.status === 'warn');
231
+ console.log();
232
+ if (failures.length > 0) {
233
+ console.log(chalk_1.default.red(` ${failures.length} issue(s) need attention.`));
234
+ process.exit(1);
235
+ }
236
+ else if (warnings.length > 0) {
237
+ console.log(chalk_1.default.yellow(` ${warnings.length} warning(s) — see above.`));
238
+ }
239
+ else {
240
+ console.log(chalk_1.default.green(' No issues found.'));
241
+ }
242
+ console.log();
243
+ }));
244
+ }
245
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../cli/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBnC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAkV/C"}
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../cli/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmCnC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAmX/C"}
@@ -39,6 +39,7 @@ exports.registerPublish = registerPublish;
39
39
  const chalk_1 = __importDefault(require("chalk"));
40
40
  const ora_1 = __importDefault(require("ora"));
41
41
  const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
42
43
  const child_process_1 = require("child_process");
43
44
  const manifest_1 = require("../lib/manifest");
44
45
  const auth_1 = require("../lib/auth");
@@ -47,6 +48,26 @@ const store_1 = require("../lib/store");
47
48
  const zip_1 = require("../lib/zip");
48
49
  const build_1 = require("./build");
49
50
  const config_1 = require("../lib/config");
51
+ /**
52
+ * Get the newest file modification time in a directory (recursive).
53
+ */
54
+ function getNewestMtime(dir) {
55
+ let newest = 0;
56
+ if (!fs.existsSync(dir))
57
+ return 0;
58
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
59
+ const fullPath = path.join(dir, entry.name);
60
+ if (entry.isDirectory()) {
61
+ if (entry.name === 'node_modules' || entry.name === '.git')
62
+ continue;
63
+ newest = Math.max(newest, getNewestMtime(fullPath));
64
+ }
65
+ else {
66
+ newest = Math.max(newest, fs.statSync(fullPath).mtimeMs);
67
+ }
68
+ }
69
+ return newest;
70
+ }
50
71
  function registerPublish(program) {
51
72
  program
52
73
  .command('publish')
@@ -78,9 +99,34 @@ function registerPublish(program) {
78
99
  catch (_c) {
79
100
  process.exit(1);
80
101
  }
102
+ // 2b. Guard: verify build output is fresh
103
+ const srcMtime = getNewestMtime(path.join(cwd, 'src'));
104
+ const manifestMtime = fs.statSync(path.join(cwd, 'manifest.json')).mtimeMs;
105
+ const distMtime = getNewestMtime(path.join(cwd, 'dist'));
106
+ if (distMtime > 0 && Math.max(srcMtime, manifestMtime) > distMtime) {
107
+ console.error(chalk_1.default.red('\n✗ Source files are newer than the build output.'));
108
+ console.error(chalk_1.default.gray(' The build may have failed or produced stale output.'));
109
+ console.error(chalk_1.default.gray(' Run "asyar build" and check for errors before publishing.'));
110
+ process.exit(1);
111
+ }
81
112
  // 3. Authenticate with store (GitHub OAuth)
82
113
  const { storeToken, githubUsername } = yield (0, auth_1.requireAuth)();
83
114
  console.log(chalk_1.default.green('✓') + ` Authenticated as ${githubUsername}`);
115
+ // 3b. Guard: check if this version is already live in the store
116
+ try {
117
+ const storeCheckRes = yield fetch(`${auth_1.STORE_URL}/api/extensions/${manifest.id}`);
118
+ if (storeCheckRes.ok) {
119
+ const existing = yield storeCheckRes.json();
120
+ if (existing.version && existing.version === manifest.version) {
121
+ console.error(chalk_1.default.red(`\n✗ Version ${manifest.version} is already live in the store.`));
122
+ console.error(chalk_1.default.gray(' Bump the version in manifest.json before publishing.'));
123
+ process.exit(1);
124
+ }
125
+ }
126
+ }
127
+ catch (_d) {
128
+ // Store unreachable — skip this guard, will fail at submission if needed
129
+ }
84
130
  // 4. Get GitHub Personal Access Token (for creating releases)
85
131
  const githubToken = yield (0, auth_1.getOrAuthorizeGitHub)();
86
132
  const github = new github_1.GitHubClient(githubToken);
@@ -109,7 +155,7 @@ function registerPublish(program) {
109
155
  .replace('git@github.com:', 'https://github.com/')
110
156
  .replace(/\.git$/, '');
111
157
  }
112
- catch (_d) {
158
+ catch (_e) {
113
159
  // No remote — that's OK, we handle it below
114
160
  }
115
161
  if (remoteUrl && /github\.com\//.test(remoteUrl)) {
@@ -155,7 +201,7 @@ function registerPublish(program) {
155
201
  ssh_url: existingRepo.ssh_url,
156
202
  };
157
203
  }
158
- catch (_e) {
204
+ catch (_f) {
159
205
  createSpinner.fail(`Repository "${repoName}" exists but is not accessible`);
160
206
  console.error(chalk_1.default.gray(` Use --repo https://github.com/${githubUsername}/${repoName} to specify it explicitly`));
161
207
  process.exit(1);
@@ -175,7 +221,7 @@ function registerPublish(program) {
175
221
  try {
176
222
  (0, child_process_1.execSync)('git rev-parse --git-dir', { cwd, stdio: 'pipe' });
177
223
  }
178
- catch (_f) {
224
+ catch (_g) {
179
225
  (0, child_process_1.execSync)('git init', { cwd, stdio: 'pipe' });
180
226
  (0, child_process_1.execSync)('git add .', { cwd, stdio: 'pipe' });
181
227
  (0, child_process_1.execSync)('git commit -m "Initial extension"', { cwd, stdio: 'pipe' });
@@ -186,11 +232,11 @@ function registerPublish(program) {
186
232
  try {
187
233
  (0, child_process_1.execSync)('git push -u origin main', { cwd, stdio: 'pipe' });
188
234
  }
189
- catch (_g) {
235
+ catch (_h) {
190
236
  try {
191
237
  (0, child_process_1.execSync)('git push -u origin master', { cwd, stdio: 'pipe' });
192
238
  }
193
- catch (_h) {
239
+ catch (_j) {
194
240
  // Both branch names failed — try force push on main
195
241
  (0, child_process_1.execSync)('git push -u origin main --force', { cwd, stdio: 'pipe' });
196
242
  }
@@ -223,7 +269,7 @@ function registerPublish(program) {
223
269
  const existingRelease = yield github.getRelease(owner, repo, releaseTag);
224
270
  // 7. Package
225
271
  const pkgSpinner = (0, ora_1.default)('Packaging extension...').start();
226
- const { zipPath, checksum, sizeBytes } = (0, zip_1.packageExtension)(cwd, manifest.id, manifest.version);
272
+ let { zipPath, checksum, sizeBytes } = (0, zip_1.packageExtension)(cwd, manifest.id, manifest.version);
227
273
  pkgSpinner.succeed(`Extension packaged (${(sizeBytes / 1024).toFixed(1)} kB)`);
228
274
  if (opts.dryRun) {
229
275
  console.log(chalk_1.default.yellow('\n[Dry Run] Would publish:'));
@@ -244,6 +290,12 @@ function registerPublish(program) {
244
290
  console.log(chalk_1.default.yellow(`⚠ Release ${releaseTag} already exists — resuming from store submission`));
245
291
  downloadUrl = existingAsset.browser_download_url;
246
292
  releaseHtmlUrl = existingRelease.html_url;
293
+ // Compute checksum from the ACTUAL uploaded file (not the fresh local build)
294
+ const resumeSpinner = (0, ora_1.default)('Verifying existing asset checksum...').start();
295
+ const assetResponse = yield fetch(existingAsset.browser_download_url);
296
+ const assetBuffer = Buffer.from(yield assetResponse.arrayBuffer());
297
+ checksum = (0, zip_1.computeChecksum)(assetBuffer);
298
+ resumeSpinner.succeed('Existing asset checksum verified');
247
299
  }
248
300
  else {
249
301
  // Release exists but asset missing — upload asset only