kubun 0.4.4 → 0.5.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/README.md CHANGED
@@ -20,7 +20,7 @@ $ npm install -g kubun
20
20
  $ kubun COMMAND
21
21
  running command...
22
22
  $ kubun (--version)
23
- kubun/0.4.4 darwin-arm64 node-v24.13.0
23
+ kubun/0.5.0 darwin-arm64 node-v24.13.0
24
24
  $ kubun --help [COMMAND]
25
25
  USAGE
26
26
  $ kubun COMMAND
package/dist/account.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { fromB64 } from '@enkaku/codec';
2
- import { getTokenSigner as signerFromKey } from '@enkaku/token';
2
+ import { createSigningIdentity } from '@enkaku/token';
3
3
  export function getSigner(key) {
4
- return signerFromKey(fromB64(key));
4
+ return createSigningIdentity(fromB64(key));
5
5
  }
package/dist/client.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { HTTPClient } from '@kubun/http-client';
2
2
  import { getSigner } from './account.js';
3
3
  export function createClient(signerKey, url = 'http://localhost:4321') {
4
- return new HTTPClient({ signer: getSigner(signerKey), url });
4
+ return new HTTPClient({ identity: getSigner(signerKey), url });
5
5
  }
@@ -23,7 +23,7 @@ export default class CreateGraphQLSchema extends Command {
23
23
  const { flags } = await this.parse(CreateGraphQLSchema);
24
24
  const clusters = await Promise.all(flags.cluster.map((path) => readJSON(path)));
25
25
  const model = GraphModel.fromClusters({ clusters });
26
- const schema = printSchema(createSchema(model.toJSON()));
26
+ const schema = printSchema(createSchema(model));
27
27
  if (flags.output == null) {
28
28
  spinner.succeed('GraphQL schema generated');
29
29
  this.log(schema);
@@ -26,7 +26,7 @@ export default class MCP extends Command {
26
26
  const config = createConfig({
27
27
  connect: flags.connect,
28
28
  database: flags.db,
29
- signer: flags.privateKey ? getSigner(flags.privateKey) : undefined,
29
+ identity: flags.privateKey ? getSigner(flags.privateKey) : undefined,
30
30
  });
31
31
  serveProcess(config);
32
32
  }
@@ -1,19 +1,7 @@
1
- import { defer } from '@enkaku/async';
2
- import { toB64 } from '@enkaku/codec';
3
- import { ServerTransport } from '@enkaku/http-server-transport';
4
- import { serve } from '@enkaku/server';
5
- import { randomSigner, toTokenSigner } from '@enkaku/token';
6
- import { serve as serveHTTP } from '@hono/node-server';
7
- import { KubunDB } from '@kubun/db';
8
- import { PostgresAdapter } from '@kubun/db-postgres';
9
- import { SQLiteAdapter } from '@kubun/db-sqlite';
10
- import { getKubunLogger } from '@kubun/logger';
11
- import { createHandlers } from '@kubun/server';
12
- import { configureSync, getConsoleSink, getLogLevels } from '@logtape/logtape';
1
+ import { startServer } from '@kubun/http-server';
2
+ import { getLogLevels } from '@logtape/logtape';
13
3
  import { Command, Flags } from '@oclif/core';
14
- import getPort from 'get-port';
15
4
  import ora from 'ora';
16
- import { getSigner } from '../account.js';
17
5
  import { resolvePath } from '../fs.js';
18
6
  export default class Serve extends Command {
19
7
  static description = 'Start a local Kubun server';
@@ -41,73 +29,31 @@ export default class Serve extends Command {
41
29
  }),
42
30
  };
43
31
  async run() {
44
- let signer;
45
32
  const spinner = ora();
46
33
  const { flags } = await this.parse(Serve);
47
- let id = flags.id;
48
- if (id == null) {
49
- if (flags.privateKey == null) {
50
- spinner.info('Generating a random private key for the server').start();
51
- const ownSigner = randomSigner();
52
- spinner.warn(`Generated private key: ${toB64(ownSigner.privateKey)}`);
53
- signer = toTokenSigner(ownSigner);
54
- }
55
- else {
56
- spinner.info('Using the provided private key for the server').start();
57
- signer = getSigner(flags.privateKey);
58
- }
59
- id = signer.id;
60
- }
61
- spinner.info(`Server DID: ${id}`);
62
- let db;
63
- if (flags.db == null) {
64
- db = new KubunDB({ adapter: new SQLiteAdapter({ database: ':memory:' }) });
65
- spinner.info('Using ephemeral (in memory) SQLite database');
34
+ spinner.start('Starting the server...');
35
+ const options = {
36
+ allowedOrigin: flags.allowedOrigin,
37
+ logLevel: flags.logLevel,
38
+ };
39
+ if (flags.port != null) {
40
+ options.port = flags.port;
66
41
  }
67
- else if (flags.db.startsWith('postgres://')) {
68
- db = new KubunDB({ adapter: new PostgresAdapter({ url: flags.db }) });
69
- spinner.info(`Using PostgreSQL database: ${flags.db}`);
42
+ if (flags.privateKey != null) {
43
+ options.privateKey = flags.privateKey;
70
44
  }
71
- else {
72
- const database = resolvePath(flags.db);
73
- db = new KubunDB({ adapter: new SQLiteAdapter({ database }) });
74
- spinner.info(`Using local SQLite database: ${database}`);
45
+ if (flags.id != null) {
46
+ options.identity = { id: flags.id };
75
47
  }
76
- configureSync({
77
- sinks: { console: getConsoleSink() },
78
- loggers: [
79
- { category: ['logtape', 'meta'], lowestLevel: 'error', sinks: ['console'] },
80
- { category: ['kubun'], lowestLevel: flags.logLevel, sinks: ['console'] },
81
- ],
82
- });
83
- const allowedOrigin = flags.allowedOrigin.split(',').map((origin) => origin.trim());
84
- const transport = new ServerTransport({ allowedOrigin });
85
- serve({
86
- handlers: createHandlers({
87
- db,
88
- logger: getKubunLogger('server'),
89
- serverAccessConfig: {
90
- defaultAccessLevel: {
91
- read: 'anyone',
92
- write: 'only_owner',
93
- },
94
- },
95
- }),
96
- id,
97
- transport,
98
- });
99
- spinner.start('Starting the server...');
100
- const port = flags.port ?? (await getPort({ port: 4321 }));
101
- const httpServer = serveHTTP({ fetch: transport.fetch, port }, (info) => {
102
- spinner.succeed(`HTTP server listening on port ${info.port} with allowed origin: ${allowedOrigin.join(', ')}`);
103
- });
104
- const stopped = defer();
105
- async function stop() {
106
- httpServer.close();
107
- stopped.resolve();
48
+ if (flags.db != null) {
49
+ options.db =
50
+ flags.db.startsWith('postgres://') || flags.db.startsWith('postgresql://')
51
+ ? flags.db
52
+ : resolvePath(flags.db);
108
53
  }
109
- process.on('SIGINT', stop);
110
- process.on('SIGTERM', stop);
111
- return stopped.promise;
54
+ const server = await startServer(options);
55
+ spinner.succeed(`HTTP server listening at ${server.url}`);
56
+ // Keep process alive until server is closed (via SIGINT/SIGTERM handled by @kubun/http-server)
57
+ await new Promise(() => { });
112
58
  }
113
59
  }
@@ -513,5 +513,5 @@
513
513
  ]
514
514
  }
515
515
  },
516
- "version": "0.4.4"
516
+ "version": "0.5.0"
517
517
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kubun",
3
- "version": "0.4.4",
3
+ "version": "0.5.0",
4
4
  "license": "see LICENSE.md",
5
5
  "description": "Kubun CLI",
6
6
  "keywords": [],
@@ -28,41 +28,31 @@
28
28
  "topicSeparator": " "
29
29
  },
30
30
  "dependencies": {
31
- "@enkaku/async": "^0.12.2",
32
- "@enkaku/codec": "^0.12.0",
33
- "@enkaku/http-server-transport": "^0.12.2",
34
- "@enkaku/server": "^0.12.3",
35
- "@enkaku/token": "0.12.3",
36
- "@hono/node-server": "^1.19.9",
37
- "@logtape/logtape": "^2.0.1",
31
+ "@enkaku/codec": "^0.13.0",
32
+ "@enkaku/token": "0.13.0",
33
+ "@logtape/logtape": "^2.0.2",
38
34
  "@mokei/context-server": "^0.5.0",
39
35
  "@oclif/core": "^4.8.0",
40
36
  "@oclif/plugin-help": "^6.2.37",
41
37
  "@oclif/plugin-plugins": "^5.4.55",
42
- "get-port": "^7.1.0",
43
38
  "graphql": "^16.12.0",
44
- "ora": "^9.1.0",
45
- "@kubun/db": "^0.4.0",
46
- "@kubun/client": "^0.4.1",
47
- "@kubun/db-sqlite": "^0.4.0",
48
- "@kubun/db-postgres": "^0.4.0",
49
- "@kubun/logger": "^0.4.0",
50
- "@kubun/mcp": "^0.4.2",
51
- "@kubun/http-client": "^0.4.1",
52
- "@kubun/server": "^0.4.3",
53
- "@kubun/protocol": "^0.4.1",
54
- "@kubun/graphql": "^0.4.5"
39
+ "ora": "^9.3.0",
40
+ "@kubun/graphql": "^0.5.0",
41
+ "@kubun/http-client": "^0.5.0",
42
+ "@kubun/protocol": "^0.5.0",
43
+ "@kubun/mcp": "^0.5.0",
44
+ "@kubun/http-server": "^0.5.0",
45
+ "@kubun/client": "^0.5.0"
55
46
  },
56
47
  "devDependencies": {
57
48
  "@oclif/test": "^4.1.16",
58
- "oclif": "^4.22.68",
59
- "shx": "^0.4.0",
49
+ "oclif": "^4.22.73",
60
50
  "ts-node": "^10",
61
51
  "typescript": "^5.9.3"
62
52
  },
63
53
  "scripts": {
64
54
  "kubun": "./bin/dev.js",
65
- "build": "shx rm -rf dist && tsc -b",
55
+ "build": "del dist && tsc -b",
66
56
  "posttest": "pnpm run lint",
67
57
  "test:types": "tsc --noEmit --skipLibCheck",
68
58
  "test:unit": "OCLIF_TEST_ROOT=. vitest run",