@hasna/project 0.1.2 → 0.1.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/cli/index.js +8 -2
- package/dist/db/projects.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/mcp/index.js +8 -2
- package/package.json +4 -4
package/dist/cli/index.js
CHANGED
|
@@ -36382,6 +36382,9 @@ function updateProject(id, input, db) {
|
|
|
36382
36382
|
if (input.name !== undefined) {
|
|
36383
36383
|
sets.push("name = ?");
|
|
36384
36384
|
params.push(input.name);
|
|
36385
|
+
const newSlug = ensureUniqueSlug(slugify(input.name), d, id);
|
|
36386
|
+
sets.push("slug = ?");
|
|
36387
|
+
params.push(newSlug);
|
|
36385
36388
|
}
|
|
36386
36389
|
if (input.description !== undefined) {
|
|
36387
36390
|
sets.push("description = ?");
|
|
@@ -36456,7 +36459,10 @@ function resolveProject(idOrSlug, db) {
|
|
|
36456
36459
|
const prefixRow = d.query("SELECT id FROM projects WHERE id LIKE ? LIMIT 1").get(`${idOrSlug}%`);
|
|
36457
36460
|
if (prefixRow)
|
|
36458
36461
|
return getProject(prefixRow.id, d);
|
|
36459
|
-
const
|
|
36462
|
+
const nameRow = d.query("SELECT id FROM projects WHERE name = ? LIMIT 1").get(idOrSlug);
|
|
36463
|
+
if (nameRow)
|
|
36464
|
+
return getProject(nameRow.id, d);
|
|
36465
|
+
const subRow = d.query("SELECT id FROM projects WHERE slug LIKE ? OR name LIKE ? ORDER BY length(slug) ASC LIMIT 1").get(`%${idOrSlug}%`, `%${idOrSlug}%`);
|
|
36460
36466
|
if (subRow)
|
|
36461
36467
|
return getProject(subRow.id, d);
|
|
36462
36468
|
const allRows = d.query("SELECT id, slug FROM projects WHERE status = 'active'").all();
|
|
@@ -45582,7 +45588,7 @@ async function syncProject(project, options = {}) {
|
|
|
45582
45588
|
const region = options.region ?? process.env["AWS_DEFAULT_REGION"] ?? "us-east-1";
|
|
45583
45589
|
const log = options.onProgress ?? (() => {});
|
|
45584
45590
|
if (!project.s3_bucket) {
|
|
45585
|
-
throw new Error(`Project "${project.name}" has no s3_bucket configured. Run:
|
|
45591
|
+
throw new Error(`Project "${project.name}" has no s3_bucket configured. Run: project update ${project.slug} --s3-bucket <bucket>`);
|
|
45586
45592
|
}
|
|
45587
45593
|
const client = makeS3Client(region);
|
|
45588
45594
|
const bucket = project.s3_bucket;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAE7D,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,OAAO,EAEP,aAAa,EACb,mBAAmB,EACnB,OAAO,EAEP,aAAa,EACd,MAAM,mBAAmB,CAAC;AAc3B,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK5C;AAwBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAmD/E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAMpE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAM5E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAM5E;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAE,aAAkB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAmBjF;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,kBAAkB,EACzB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAE7D,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,OAAO,EAEP,aAAa,EACb,mBAAmB,EACnB,OAAO,EAEP,aAAa,EACd,MAAM,mBAAmB,CAAC;AAc3B,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK5C;AAwBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAmD/E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAMpE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAM5E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAM5E;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAE,aAAkB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAmBjF;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,kBAAkB,EACzB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAmCT;AAGD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,mBAAmB,EACjC,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAqBT;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAMjE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAMnE;AAeD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAoC9E;AAOD,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,aAAa,EACxB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAST;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACjE,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAST;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAMpF"}
|
package/dist/index.js
CHANGED
|
@@ -22658,6 +22658,9 @@ function updateProject(id, input, db) {
|
|
|
22658
22658
|
if (input.name !== undefined) {
|
|
22659
22659
|
sets.push("name = ?");
|
|
22660
22660
|
params.push(input.name);
|
|
22661
|
+
const newSlug = ensureUniqueSlug(slugify(input.name), d, id);
|
|
22662
|
+
sets.push("slug = ?");
|
|
22663
|
+
params.push(newSlug);
|
|
22661
22664
|
}
|
|
22662
22665
|
if (input.description !== undefined) {
|
|
22663
22666
|
sets.push("description = ?");
|
|
@@ -22753,7 +22756,10 @@ function resolveProject(idOrSlug, db) {
|
|
|
22753
22756
|
const prefixRow = d.query("SELECT id FROM projects WHERE id LIKE ? LIMIT 1").get(`${idOrSlug}%`);
|
|
22754
22757
|
if (prefixRow)
|
|
22755
22758
|
return getProject(prefixRow.id, d);
|
|
22756
|
-
const
|
|
22759
|
+
const nameRow = d.query("SELECT id FROM projects WHERE name = ? LIMIT 1").get(idOrSlug);
|
|
22760
|
+
if (nameRow)
|
|
22761
|
+
return getProject(nameRow.id, d);
|
|
22762
|
+
const subRow = d.query("SELECT id FROM projects WHERE slug LIKE ? OR name LIKE ? ORDER BY length(slug) ASC LIMIT 1").get(`%${idOrSlug}%`, `%${idOrSlug}%`);
|
|
22757
22763
|
if (subRow)
|
|
22758
22764
|
return getProject(subRow.id, d);
|
|
22759
22765
|
const allRows = d.query("SELECT id, slug FROM projects WHERE status = 'active'").all();
|
|
@@ -31858,7 +31864,7 @@ async function syncProject(project, options = {}) {
|
|
|
31858
31864
|
const region = options.region ?? process.env["AWS_DEFAULT_REGION"] ?? "us-east-1";
|
|
31859
31865
|
const log = options.onProgress ?? (() => {});
|
|
31860
31866
|
if (!project.s3_bucket) {
|
|
31861
|
-
throw new Error(`Project "${project.name}" has no s3_bucket configured. Run:
|
|
31867
|
+
throw new Error(`Project "${project.name}" has no s3_bucket configured. Run: project update ${project.slug} --s3-bucket <bucket>`);
|
|
31862
31868
|
}
|
|
31863
31869
|
const client = makeS3Client(region);
|
|
31864
31870
|
const bucket = project.s3_bucket;
|
package/dist/mcp/index.js
CHANGED
|
@@ -37811,6 +37811,9 @@ function updateProject(id, input, db) {
|
|
|
37811
37811
|
if (input.name !== undefined) {
|
|
37812
37812
|
sets.push("name = ?");
|
|
37813
37813
|
params.push(input.name);
|
|
37814
|
+
const newSlug = ensureUniqueSlug(slugify(input.name), d, id);
|
|
37815
|
+
sets.push("slug = ?");
|
|
37816
|
+
params.push(newSlug);
|
|
37814
37817
|
}
|
|
37815
37818
|
if (input.description !== undefined) {
|
|
37816
37819
|
sets.push("description = ?");
|
|
@@ -37898,7 +37901,10 @@ function resolveProject(idOrSlug, db) {
|
|
|
37898
37901
|
const prefixRow = d.query("SELECT id FROM projects WHERE id LIKE ? LIMIT 1").get(`${idOrSlug}%`);
|
|
37899
37902
|
if (prefixRow)
|
|
37900
37903
|
return getProject(prefixRow.id, d);
|
|
37901
|
-
const
|
|
37904
|
+
const nameRow = d.query("SELECT id FROM projects WHERE name = ? LIMIT 1").get(idOrSlug);
|
|
37905
|
+
if (nameRow)
|
|
37906
|
+
return getProject(nameRow.id, d);
|
|
37907
|
+
const subRow = d.query("SELECT id FROM projects WHERE slug LIKE ? OR name LIKE ? ORDER BY length(slug) ASC LIMIT 1").get(`%${idOrSlug}%`, `%${idOrSlug}%`);
|
|
37902
37908
|
if (subRow)
|
|
37903
37909
|
return getProject(subRow.id, d);
|
|
37904
37910
|
const allRows = d.query("SELECT id, slug FROM projects WHERE status = 'active'").all();
|
|
@@ -47004,7 +47010,7 @@ async function syncProject(project, options = {}) {
|
|
|
47004
47010
|
const region = options.region ?? process.env["AWS_DEFAULT_REGION"] ?? "us-east-1";
|
|
47005
47011
|
const log = options.onProgress ?? (() => {});
|
|
47006
47012
|
if (!project.s3_bucket) {
|
|
47007
|
-
throw new Error(`Project "${project.name}" has no s3_bucket configured. Run:
|
|
47013
|
+
throw new Error(`Project "${project.name}" has no s3_bucket configured. Run: project update ${project.slug} --s3-bucket <bucket>`);
|
|
47008
47014
|
}
|
|
47009
47015
|
const client = makeS3Client(region);
|
|
47010
47016
|
const bucket = project.s3_bucket;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/project",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Project management CLI + MCP server for AI agents — register, sync, and open projects across machines",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -45,11 +45,11 @@
|
|
|
45
45
|
},
|
|
46
46
|
"repository": {
|
|
47
47
|
"type": "git",
|
|
48
|
-
"url": "https://github.com/hasna/
|
|
48
|
+
"url": "https://github.com/hasna/projects.git"
|
|
49
49
|
},
|
|
50
|
-
"homepage": "https://github.com/hasna/
|
|
50
|
+
"homepage": "https://github.com/hasna/projects",
|
|
51
51
|
"bugs": {
|
|
52
|
-
"url": "https://github.com/hasna/
|
|
52
|
+
"url": "https://github.com/hasna/projects/issues"
|
|
53
53
|
},
|
|
54
54
|
"engines": {
|
|
55
55
|
"bun": ">=1.0.0"
|