@theia/ai-core 1.77.0-next.57 → 1.77.0-next.63
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/lib/browser/ai-core-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-core-frontend-module.js +2 -0
- package/lib/browser/ai-core-frontend-module.js.map +1 -1
- package/lib/browser/file-variable-contribution.d.ts +2 -0
- package/lib/browser/file-variable-contribution.d.ts.map +1 -1
- package/lib/browser/file-variable-contribution.js +8 -23
- package/lib/browser/file-variable-contribution.js.map +1 -1
- package/lib/browser/file-variable-contribution.spec.d.ts +2 -0
- package/lib/browser/file-variable-contribution.spec.d.ts.map +1 -0
- package/lib/browser/file-variable-contribution.spec.js +98 -0
- package/lib/browser/file-variable-contribution.spec.js.map +1 -0
- package/lib/browser/index.d.ts +1 -0
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +1 -0
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/theia-variable-contribution.js +3 -3
- package/lib/browser/theia-variable-contribution.js.map +1 -1
- package/lib/browser/workspace-relative-path-resolver.d.ts +20 -0
- package/lib/browser/workspace-relative-path-resolver.d.ts.map +1 -0
- package/lib/browser/workspace-relative-path-resolver.js +78 -0
- package/lib/browser/workspace-relative-path-resolver.js.map +1 -0
- package/package.json +9 -9
- package/src/browser/ai-core-frontend-module.ts +2 -0
- package/src/browser/file-variable-contribution.spec.ts +107 -0
- package/src/browser/file-variable-contribution.ts +8 -27
- package/src/browser/index.ts +1 -0
- package/src/browser/theia-variable-contribution.ts +3 -3
- package/src/browser/workspace-relative-path-resolver.ts +71 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-core-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-core-frontend-module.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;
|
|
1
|
+
{"version":3,"file":"ai-core-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-core-frontend-module.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAgF/D,wBAyJG"}
|
|
@@ -37,6 +37,7 @@ const frontend_prompt_customization_service_1 = require("./frontend-prompt-custo
|
|
|
37
37
|
const frontend_variable_service_1 = require("./frontend-variable-service");
|
|
38
38
|
const prompttemplate_contribution_1 = require("./prompttemplate-contribution");
|
|
39
39
|
const file_variable_contribution_1 = require("./file-variable-contribution");
|
|
40
|
+
const workspace_relative_path_resolver_1 = require("./workspace-relative-path-resolver");
|
|
40
41
|
const theia_variable_contribution_1 = require("./theia-variable-contribution");
|
|
41
42
|
const today_variable_contribution_1 = require("../common/today-variable-contribution");
|
|
42
43
|
const agents_variable_contribution_1 = require("../common/agents-variable-contribution");
|
|
@@ -120,6 +121,7 @@ exports.default = new inversify_1.ContainerModule(bind => {
|
|
|
120
121
|
bind(prompt_variable_contribution_1.PromptVariableContribution).toSelf().inSingletonScope();
|
|
121
122
|
bind(common_1.AIVariableContribution).toService(prompt_variable_contribution_1.PromptVariableContribution);
|
|
122
123
|
bind(common_1.AIVariableContribution).to(today_variable_contribution_1.TodayVariableContribution).inSingletonScope();
|
|
124
|
+
bind(workspace_relative_path_resolver_1.WorkspaceRelativePathResolver).toSelf().inSingletonScope();
|
|
123
125
|
bind(common_1.AIVariableContribution).to(file_variable_contribution_1.FileVariableContribution).inSingletonScope();
|
|
124
126
|
bind(agents_variable_contribution_1.AgentsVariableContribution).toSelf().inSingletonScope();
|
|
125
127
|
bind(common_1.AIVariableContribution).toService(agents_variable_contribution_1.AgentsVariableContribution);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-core-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-core-frontend-module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-core-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-core-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,sCAA0I;AAC1I,+GAGuE;AACvE,4DAA+D;AAC/D,qGAA6F;AAC7F,yFAAyH;AACzH,qFAA+E;AAC/E,uEAAkE;AAClE,mFAA6E;AAC7E,mFAA6E;AAC7E,yEAA4E;AAC5E,sCAyBmB;AACnB,yFAG4C;AAC5C,qDAAqG;AACrG,mFAA0F;AAC1F,iEAA2F;AAC3F,2GAAoG;AACpG,uEAAsE;AACtE,+DAA8D;AAC9D,mGAAoG;AACpG,2EAAsG;AACtG,+EAA2E;AAC3E,6EAAwE;AACxE,yFAAmF;AACnF,+EAA0E;AAC1E,uFAAkF;AAClF,yFAAoF;AACpF,6FAAuF;AACvF,iFAA4E;AAC5E,mEAAuF;AACvF,2DAAyE;AACzE,6EAAuE;AACvE,iEAA+D;AAC/D,mDAAgG;AAChG,yEAAoE;AACpE,iFAA2E;AAC3E,iFAA4E;AAC5E,6FAAuF;AACvF,iGAA4F;AAC5F,6GAAuG;AACvG,2HAAoH;AACpH,2DAA8E;AAC9E,uFAAiF;AACjF,qGAA8F;AAC9F,+EAAyE;AACzE,+GAAwG;AACxG,6EAAwE;AACxE,uFAAqF;AACrF,iFAA2E;AAC3E,2FAAiH;AACjH,qFAA8E;AAC9E,6EAAwE;AACxE,uEAAkE;AAClE,iEAA4D;AAE5D,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAA,mCAA4B,EAAC,IAAI,EAAE,cAAK,CAAC,CAAC;IAC1C,IAAA,mCAA4B,EAAC,IAAI,EAAE,8BAAqB,CAAC,CAAC;IAE1D,IAAI,CAAC,oEAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,sCAA6B,CAAC,CAAC,SAAS,CAAC,oEAAiC,CAAC,CAAC;IACjF,IAAI,CAAC,8BAAqB,CAAC,CAAC,SAAS,CAAC,oEAAiC,CAAC,CAAC;IAEzE,IAAI,CAAC,kEAA+B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAClE,IAAI,CAAC,oCAA2B,CAAC,CAAC,SAAS,CAAC,kEAA+B,CAAC,CAAC;IAC7E,IAAI,CAAC,oCAA2B,CAAC,CAAC,SAAS,CAAC,oCAA2B,CAAC,CAAC;IAEzE,IAAI,CAAC,8CAAqC,CAAC,CAAC,cAAc,CACtD,GAAG,CAAC,EAAE;QACF,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAA4B,sDAAwB,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAA8B,oCAA2B,CAAC,CAAC;QAC3F,OAAO,UAAU,CAAC,WAAW,CAAwC,0CAAiC,EAAE,MAAM,CAAC,CAAC;IACpH,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,sCAA6B,CAAC;SAC9B,cAAc,CAAC,GAAG,CAAC,EAAE;QAClB,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAA4B,sDAAwB,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAA8B,oCAA2B,CAAC,CAAC;QAC3F,OAAO,UAAU,CAAC,WAAW,CAAgC,kCAAyB,EAAE,MAAM,CAAC,CAAC;IACpG,CAAC,CAAC;SACD,gBAAgB,EAAE,CAAC;IAExB,IAAA,2CAAqB,EAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,CAAC,iFAAyC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5E,IAAI,CAAC,2CAAkC,CAAC,CAAC,SAAS,CAAC,iFAAyC,CAAC,CAAC;IAC9F,IAAI,CAAC,0BAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,sBAAa,CAAC,CAAC,SAAS,CAAC,0BAAiB,CAAC,CAAC;IAEjD,IAAI,CAAC,wDAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,gDAAqC,CAAC,CAAC,SAAS,CAAC,wDAA0B,CAAC,CAAC;IAClF,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,wDAA0B,CAAC,CAAC;IAChE,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,wDAA0B,CAAC,CAAC;IAEtE,IAAI,CAAC,2CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,oCAAiB,CAAC,CAAC,SAAS,CAAC,2CAAqB,CAAC,CAAC;IAEzD,IAAI,CAAC,mCAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,4BAAY,CAAC,CAAC,SAAS,CAAC,mCAAmB,CAAC,CAAC;IAElD,IAAI,CAAC,iDAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzD,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,iDAAsB,CAAC,CAAC;IAExE,IAAI,CAAC,0CAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzD,IAAI,CAAC,mCAAe,CAAC,CAAC,SAAS,CAAC,0CAAsB,CAAC,CAAC;IACxD,IAAI,CAAC,sDAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC3D,IAAI,CAAC,qFAAuC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1E,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,qFAAuC,CAAC,CAAC;IACzF,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,qFAAuC,CAAC,CAAC;IAE7E,IAAA,mCAA4B,EAAC,IAAI,EAAE,0CAA0B,CAAC,CAAC;IAE/D,IAAA,mCAA4B,EAAC,IAAI,EAAE,+BAAsB,CAAC,CAAC;IAC3D,IAAI,CAAC,0DAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjE,IAAI,CAAC,mDAAuB,CAAC,CAAC,SAAS,CAAC,0DAA8B,CAAC,CAAC;IACxE,IAAI,CAAC,0BAAiB,CAAC,CAAC,SAAS,CAAC,mDAAuB,CAAC,CAAC;IAC3D,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,mDAAuB,CAAC,CAAC;IAEzE,IAAI,CAAC,uDAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,+BAAsB,CAAC,CAAC,SAAS,CAAC,uDAAyB,CAAC,CAAC;IAElE,IAAI,CAAC,yDAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,+BAAsB,CAAC,CAAC,SAAS,CAAC,yDAA0B,CAAC,CAAC;IACnE,IAAI,CAAC,+BAAsB,CAAC,CAAC,EAAE,CAAC,uDAAyB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9E,IAAI,CAAC,gEAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAChE,IAAI,CAAC,+BAAsB,CAAC,CAAC,EAAE,CAAC,qDAAwB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC7E,IAAI,CAAC,yDAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,+BAAsB,CAAC,CAAC,SAAS,CAAC,yDAA0B,CAAC,CAAC;IACnE,IAAI,CAAC,+BAAsB,CAAC,CAAC,EAAE,CAAC,oEAA+B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACpF,IAAI,CAAC,yDAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,+BAAsB,CAAC,CAAC,SAAS,CAAC,yDAA0B,CAAC,CAAC;IACnE,IAAI,CAAC,8DAA4B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC/D,IAAI,CAAC,+BAAsB,CAAC,CAAC,SAAS,CAAC,8DAA4B,CAAC,CAAC;IACrE,IAAI,CAAC,+BAAsB,CAAC,CAAC,EAAE,CAAC,iEAA8B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACnF,IAAI,CAAC,+BAAsB,CAAC,CAAC,EAAE,CAAC,oEAA+B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEpF,IAAI,CAAC,oFAAuC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1E,IAAI,CAAC,+BAAsB,CAAC,CAAC,SAAS,CAAC,oFAAuC,CAAC,CAAC;IAEhF,IAAI,CAAC,iGAA6C,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAChF,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,iGAA6C,CAAC,CAAC;IAE/F,IAAI,CAAC,2EAAkC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACrE,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,2EAAkC,CAAC,CAAC;IAEpF,IAAI,CAAC,yCAA+B,CAAC,CAAC,EAAE,CAAC,iFAAqC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEnG,IAAI,CAAC,+BAAsB,CAAC,CAAC,EAAE,CAAC,mCAA0B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC/E,IAAA,mCAA4B,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAC;IAEjD,IAAI,CAAC,+CAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,2CAAmB,CAAC,CAAC,SAAS,CAAC,+CAAuB,CAAC,CAAC;IAC7D,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,2CAAmB,CAAC,CAAC;IAErE,IAAI,CAAC,gCAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACnD,IAAI,CAAC,4BAAY,CAAC,CAAC,SAAS,CAAC,gCAAgB,CAAC,CAAC;IAE/C,IAAI,CAAC,oDAAuB,CAAC,CAAC,SAAS,CAAiB,OAAO,CAAC,EAAE,CAAC,CAAC,OAAuB,EAAE,EAAE;QAC3F,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAsB,2CAAmB,CAAC,CAAC;QAC1F,OAAO;YACH,OAAO,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACzD,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;YACrG,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;YACvG,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wDAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,wDAAyB,CAAC,CAAC;IAC/D,IAAI,CAAC,kEAAgC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACnE,IAAI,CAAC,6CAAoB,CAAC,CAAC,SAAS,CAAC,kEAAgC,CAAC,CAAC;IAEvE,IAAI,CAAC,wDAAyB,CAAC,CAAC,EAAE,CAAC,iEAA6B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrF,IAAI,CAAC,gCAAuB,CAAC,CAAC,EAAE,CAAC,+DAA2B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEjF,IAAI,CAAC,0EAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,iDAA0B,CAAC,CAAC,SAAS,CAAC,0EAAiC,CAAC,CAAC;IAE9E,sGAAsG;IACtG,IAAI,CAAC,6BAAsB,CAAC,CAAC,EAAE,CAAC,gEAA6B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClF,yFAAyF;IACzF,IAAI,CAAC,6BAAsB,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,uEAAoC,EAAE,CAAC,CAAC;IAE/F,IAAI,CAAC,4DAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC9D,IAAI,CAAC,+CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAExD,qGAAqG;IACrG,IAAI,CAAC,0DAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAE7D,IAAI,CAAC,0DAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,+BAAsB,CAAC,CAAC,SAAS,CAAC,0DAA0B,CAAC,CAAC;IAEnE,IAAI,CAAC,0BAAiB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QACzC,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAA4B,sDAAwB,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAA0B,gCAAuB,CAAC,CAAC;QACnF,OAAO,UAAU,CAAC,WAAW,CAAoB,iCAAwB,EAAE,MAAM,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtB,IAAI,CAAC,mCAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,uBAAgB,CAAC,CAAC,SAAS,CAAC,mCAA0B,CAAC,CAAC;IAC7D,IAAI,CAAC,2DAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,mCAAyB,CAAC,CAAC,SAAS,CAAC,2DAA0B,CAAC,CAAC;IAEtE,IAAI,CAAC,qDAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC3D,IAAI,CAAC,+CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,yCAAkB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACrD,IAAI,CAAC,sCAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAChE,IAAI,CAAC,uBAAgB,CAAC,CAAC,SAAS,CAAC,sCAA6B,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
|
|
4
4
|
import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
|
5
5
|
import { AIVariable, AIVariableContext, AIVariableContribution, AIVariableOpener, AIVariableResolutionRequest, AIVariableResolver, ResolvedAIContextVariable } from '../common/variable-service';
|
|
6
6
|
import { FrontendVariableService } from './frontend-variable-service';
|
|
7
|
+
import { WorkspaceRelativePathResolver } from './workspace-relative-path-resolver';
|
|
7
8
|
export declare namespace FileVariableArgs {
|
|
8
9
|
const uri = "uri";
|
|
9
10
|
}
|
|
@@ -12,6 +13,7 @@ export declare class FileVariableContribution implements AIVariableContribution,
|
|
|
12
13
|
protected readonly fileService: FileService;
|
|
13
14
|
protected readonly wsService: WorkspaceService;
|
|
14
15
|
protected readonly openerService: OpenerService;
|
|
16
|
+
protected readonly pathResolver: WorkspaceRelativePathResolver;
|
|
15
17
|
registerVariables(service: FrontendVariableService): void;
|
|
16
18
|
canResolve(request: AIVariableResolutionRequest, _: AIVariableContext): Promise<number>;
|
|
17
19
|
resolve(request: AIVariableResolutionRequest, _: AIVariableContext): Promise<ResolvedAIContextVariable | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/file-variable-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,
|
|
1
|
+
{"version":3,"file":"file-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/file-variable-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAO,GAAG,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAsB,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,yBAAyB,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,yBAAiB,gBAAgB,CAAC;IACvB,MAAM,GAAG,QAAQ,CAAC;CAC5B;AAED,eAAO,MAAM,aAAa,EAAE,UAQ3B,CAAC;AAEF,qBACa,wBAAyB,YAAW,sBAAsB,EAAE,kBAAkB,EAAE,gBAAgB;IAEzG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,6BAA6B,CAAC;IAE/D,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAKnD,UAAU,CAAC,OAAO,EAAE,2BAA2B,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvF,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;cAkBzG,KAAK,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IASrF,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpF,IAAI,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ3E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;CAY1E"}
|
|
@@ -22,6 +22,7 @@ const browser_1 = require("@theia/core/lib/browser");
|
|
|
22
22
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
23
23
|
const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
|
|
24
24
|
const workspace_service_1 = require("@theia/workspace/lib/browser/workspace-service");
|
|
25
|
+
const workspace_relative_path_resolver_1 = require("./workspace-relative-path-resolver");
|
|
25
26
|
var FileVariableArgs;
|
|
26
27
|
(function (FileVariableArgs) {
|
|
27
28
|
FileVariableArgs.uri = 'uri';
|
|
@@ -79,29 +80,9 @@ let FileVariableContribution = class FileVariableContribution {
|
|
|
79
80
|
await (0, browser_1.open)(this.openerService, uri);
|
|
80
81
|
}
|
|
81
82
|
async makeAbsolute(pathStr) {
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const workspaceRoots = this.wsService.tryGetRoots();
|
|
86
|
-
const segments = normalizedPath.split('/');
|
|
87
|
-
if (segments.length > 0) {
|
|
88
|
-
const potentialRootName = segments[0];
|
|
89
|
-
for (const root of workspaceRoots) {
|
|
90
|
-
if (root.resource.path.base === potentialRootName) {
|
|
91
|
-
const restOfPath = segments.slice(1).join('/');
|
|
92
|
-
const uri = restOfPath ? root.resource.resolve(restOfPath) : root.resource;
|
|
93
|
-
if (await this.fileService.exists(uri)) {
|
|
94
|
-
return uri;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
const wsUris = workspaceRoots.map(root => root.resource.resolve(path));
|
|
100
|
-
for (const uri of wsUris) {
|
|
101
|
-
if (await this.fileService.exists(uri)) {
|
|
102
|
-
return uri;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
83
|
+
const workspaceUri = await this.pathResolver.resolveExistingRelativePath(pathStr);
|
|
84
|
+
if (workspaceUri) {
|
|
85
|
+
return workspaceUri;
|
|
105
86
|
}
|
|
106
87
|
const argUri = new core_1.URI(pathStr);
|
|
107
88
|
if (await this.fileService.exists(argUri)) {
|
|
@@ -123,6 +104,10 @@ tslib_1.__decorate([
|
|
|
123
104
|
(0, inversify_1.inject)(browser_1.OpenerService),
|
|
124
105
|
tslib_1.__metadata("design:type", Object)
|
|
125
106
|
], FileVariableContribution.prototype, "openerService", void 0);
|
|
107
|
+
tslib_1.__decorate([
|
|
108
|
+
(0, inversify_1.inject)(workspace_relative_path_resolver_1.WorkspaceRelativePathResolver),
|
|
109
|
+
tslib_1.__metadata("design:type", workspace_relative_path_resolver_1.WorkspaceRelativePathResolver)
|
|
110
|
+
], FileVariableContribution.prototype, "pathResolver", void 0);
|
|
126
111
|
exports.FileVariableContribution = FileVariableContribution = tslib_1.__decorate([
|
|
127
112
|
(0, inversify_1.injectable)()
|
|
128
113
|
], FileVariableContribution);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/file-variable-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,
|
|
1
|
+
{"version":3,"file":"file-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/file-variable-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-variable-contribution.spec.d.ts","sourceRoot":"","sources":["../../src/browser/file-variable-contribution.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 STMicroelectronics and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const tslib_1 = require("tslib");
|
|
19
|
+
const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
|
|
20
|
+
let disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
21
|
+
const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
|
|
22
|
+
frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
|
|
23
|
+
const chai_1 = require("chai");
|
|
24
|
+
const core_1 = require("@theia/core");
|
|
25
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
26
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
27
|
+
const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
|
|
28
|
+
const workspace_service_1 = require("@theia/workspace/lib/browser/workspace-service");
|
|
29
|
+
const with_workspace_service_defaults_1 = require("@theia/workspace/lib/browser/test/with-workspace-service-defaults");
|
|
30
|
+
const file_variable_contribution_1 = require("./file-variable-contribution");
|
|
31
|
+
const workspace_relative_path_resolver_1 = require("./workspace-relative-path-resolver");
|
|
32
|
+
disableJSDOM();
|
|
33
|
+
let TestFileVariableContribution = class TestFileVariableContribution extends file_variable_contribution_1.FileVariableContribution {
|
|
34
|
+
resolvePath(path) {
|
|
35
|
+
return this.makeAbsolute(path);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
TestFileVariableContribution = tslib_1.__decorate([
|
|
39
|
+
(0, inversify_1.injectable)()
|
|
40
|
+
], TestFileVariableContribution);
|
|
41
|
+
describe('FileVariableContribution path resolution', () => {
|
|
42
|
+
const ROOTS = ['file:///alice/app', 'file:///bob/app', 'file:///ws/theia'];
|
|
43
|
+
const FILES = ['file:///alice/app/src/a.ts', 'file:///bob/app/src/a.ts', 'file:///bob/app/src/only-bob.ts', 'file:///ws/theia/README.md'];
|
|
44
|
+
let roots;
|
|
45
|
+
let workspaceService;
|
|
46
|
+
let contribution;
|
|
47
|
+
before(() => {
|
|
48
|
+
disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
49
|
+
});
|
|
50
|
+
after(() => {
|
|
51
|
+
disableJSDOM();
|
|
52
|
+
});
|
|
53
|
+
beforeEach(() => {
|
|
54
|
+
roots = ROOTS;
|
|
55
|
+
const container = new inversify_1.Container();
|
|
56
|
+
const fileService = { exists: async (uri) => FILES.includes(uri.toString()) };
|
|
57
|
+
workspaceService = (0, with_workspace_service_defaults_1.withWorkspaceServiceDefaults)({
|
|
58
|
+
tryGetRoots: () => roots.map(root => ({ resource: new core_1.URI(root), isDirectory: true }))
|
|
59
|
+
});
|
|
60
|
+
container.bind(workspace_service_1.WorkspaceService).toConstantValue(workspaceService);
|
|
61
|
+
container.bind(file_service_1.FileService).toConstantValue(fileService);
|
|
62
|
+
container.bind(browser_1.OpenerService).toConstantValue({});
|
|
63
|
+
container.bind(workspace_relative_path_resolver_1.WorkspaceRelativePathResolver).toSelf();
|
|
64
|
+
container.bind(TestFileVariableContribution).toSelf();
|
|
65
|
+
contribution = container.get(TestFileVariableContribution);
|
|
66
|
+
});
|
|
67
|
+
const resolve = async (path) => (await contribution.resolvePath(path))?.toString();
|
|
68
|
+
it('resolves the root-prefixed path of a file in every root', async () => {
|
|
69
|
+
for (const file of FILES) {
|
|
70
|
+
(0, chai_1.expect)(await resolve(workspaceService.getRootPrefixedPath(new core_1.URI(file)))).to.equal(file);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
it('resolves a path prefixed with a basename shared by several roots, as saved by earlier versions', async () => {
|
|
74
|
+
(0, chai_1.expect)(await resolve('app/src/only-bob.ts')).to.equal('file:///bob/app/src/only-bob.ts');
|
|
75
|
+
});
|
|
76
|
+
it('does not resolve a path prefixed with a basename shared by several roots that contain the file', async () => {
|
|
77
|
+
(0, chai_1.expect)(await resolve('app/src/a.ts')).to.be.undefined;
|
|
78
|
+
});
|
|
79
|
+
it('resolves a path prefixed with a root name that the roots no longer assign', async () => {
|
|
80
|
+
// Saved as `alice/app/...` while `/bob/app` was open, too; now the root is just named `app`.
|
|
81
|
+
roots = ['file:///alice/app', 'file:///ws/theia'];
|
|
82
|
+
(0, chai_1.expect)(await resolve('alice/app/src/a.ts')).to.equal('file:///alice/app/src/a.ts');
|
|
83
|
+
});
|
|
84
|
+
it('resolves a path without a root name, as saved by earlier versions', async () => {
|
|
85
|
+
(0, chai_1.expect)(await resolve('README.md')).to.equal('file:///ws/theia/README.md');
|
|
86
|
+
});
|
|
87
|
+
it('does not resolve a relative path that leaves its root', async () => {
|
|
88
|
+
FILES.push('file:///alice/secret.txt');
|
|
89
|
+
try {
|
|
90
|
+
(0, chai_1.expect)(await resolve('../secret.txt')).to.be.undefined;
|
|
91
|
+
(0, chai_1.expect)(await resolve('app/../../secret.txt')).to.be.undefined;
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
FILES.pop();
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=file-variable-contribution.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-variable-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/file-variable-contribution.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,8DAAiE;AACjE,IAAI,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC;AACjC,uHAAiH;AACjH,wEAAiC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE1C,+BAA8B;AAC9B,sCAAkC;AAClC,qDAAwD;AACxD,4DAAqE;AACrE,6EAAyE;AACzE,sFAAkF;AAClF,uHAAiH;AACjH,6EAAwE;AACxE,yFAAmF;AAEnF,YAAY,EAAE,CAAC;AAGf,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,qDAAwB;IAC/D,WAAW,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;CACJ,CAAA;AAJK,4BAA4B;IADjC,IAAA,sBAAU,GAAE;GACP,4BAA4B,CAIjC;AAED,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IAEtD,MAAM,KAAK,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,CAAC,4BAA4B,EAAE,0BAA0B,EAAE,iCAAiC,EAAE,4BAA4B,CAAC,CAAC;IAE1I,IAAI,KAAe,CAAC;IACpB,IAAI,gBAAkC,CAAC;IACvC,IAAI,YAA0C,CAAC;IAE/C,MAAM,CAAC,GAAG,EAAE;QACR,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAE;QACP,YAAY,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACZ,KAAK,GAAG,KAAK,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAA4B,CAAC;QAC7G,gBAAgB,GAAG,IAAA,8DAA4B,EAAC;YAC5C,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,UAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;SACzF,CAAC,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,oCAAgB,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACnE,SAAS,CAAC,IAAI,CAAC,0BAAW,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACzD,SAAS,CAAC,IAAI,CAAC,uBAAa,CAAC,CAAC,eAAe,CAAC,EAAmB,CAAC,CAAC;QACnE,SAAS,CAAC,IAAI,CAAC,gEAA6B,CAAC,CAAC,MAAM,EAAE,CAAC;QACvD,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,MAAM,EAAE,CAAC;QACtD,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAA+B,EAAE,CAAC,CAAC,MAAM,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;IAExH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACrE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAA,aAAM,EAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,UAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;QAC5G,IAAA,aAAM,EAAC,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;QAC5G,IAAA,aAAM,EAAC,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACvF,6FAA6F;QAC7F,KAAK,GAAG,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;QAClD,IAAA,aAAM,EAAC,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QAC/E,IAAA,aAAM,EAAC,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACnE,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,IAAI,CAAC;YACD,IAAA,aAAM,EAAC,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACvD,IAAA,aAAM,EAAC,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAClE,CAAC;gBAAS,CAAC;YACP,KAAK,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/lib/browser/index.d.ts
CHANGED
|
@@ -35,4 +35,5 @@ export * from '../common/language-model-service';
|
|
|
35
35
|
export * from './generic-capabilities-variable-contribution';
|
|
36
36
|
export * from './generic-capabilities-prompt-fragment-contribution';
|
|
37
37
|
export * from './prompt-variable-contribution';
|
|
38
|
+
export * from './workspace-relative-path-resolver';
|
|
38
39
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAgBA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0CAA0C,CAAC;AACzD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qDAAqD,CAAC;AACpE,cAAc,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAgBA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0CAA0C,CAAC;AACzD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qDAAqD,CAAC;AACpE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC"}
|
package/lib/browser/index.js
CHANGED
|
@@ -53,4 +53,5 @@ tslib_1.__exportStar(require("../common/language-model-service"), exports);
|
|
|
53
53
|
tslib_1.__exportStar(require("./generic-capabilities-variable-contribution"), exports);
|
|
54
54
|
tslib_1.__exportStar(require("./generic-capabilities-prompt-fragment-contribution"), exports);
|
|
55
55
|
tslib_1.__exportStar(require("./prompt-variable-contribution"), exports);
|
|
56
|
+
tslib_1.__exportStar(require("./workspace-relative-path-resolver"), exports);
|
|
56
57
|
//# sourceMappingURL=index.js.map
|
package/lib/browser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,uEAA6C;AAC7C,oEAA0C;AAC1C,iEAAuC;AACvC,kEAAwC;AACxC,uEAA6C;AAC7C,sFAA4D;AAC5D,oEAA0C;AAC1C,wEAA8C;AAC9C,gEAAsC;AACtC,0EAAgD;AAChD,iEAAuC;AACvC,6EAAmD;AACnD,mFAAyD;AACzD,6EAAmD;AACnD,2EAAiD;AACjD,oEAA0C;AAC1C,8EAAoD;AACpD,sEAA4C;AAC5C,wEAA8C;AAC9C,wEAA8C;AAC9C,+EAAqD;AACrD,yEAA+C;AAC/C,0DAAgC;AAChC,8DAAoC;AACpC,4EAAkD;AAClD,mFAAyD;AACzD,wEAA8C;AAC9C,wFAA8D;AAC9D,qEAA2C;AAC3C,mEAAyC;AACzC,qEAA2C;AAC3C,sEAA4C;AAC5C,yEAA+C;AAC/C,2EAAiD;AACjD,uFAA6D;AAC7D,8FAAoE;AACpE,yEAA+C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,uEAA6C;AAC7C,oEAA0C;AAC1C,iEAAuC;AACvC,kEAAwC;AACxC,uEAA6C;AAC7C,sFAA4D;AAC5D,oEAA0C;AAC1C,wEAA8C;AAC9C,gEAAsC;AACtC,0EAAgD;AAChD,iEAAuC;AACvC,6EAAmD;AACnD,mFAAyD;AACzD,6EAAmD;AACnD,2EAAiD;AACjD,oEAA0C;AAC1C,8EAAoD;AACpD,sEAA4C;AAC5C,wEAA8C;AAC9C,wEAA8C;AAC9C,+EAAqD;AACrD,yEAA+C;AAC/C,0DAAgC;AAChC,8DAAoC;AACpC,4EAAkD;AAClD,mFAAyD;AACzD,wEAA8C;AAC9C,wFAA8D;AAC9D,qEAA2C;AAC3C,mEAAyC;AACzC,qEAA2C;AAC3C,sEAA4C;AAC5C,yEAA+C;AAC/C,2EAAiD;AACjD,uFAA6D;AAC7D,8FAAoE;AACpE,yEAA+C;AAC/C,6EAAmD"}
|
|
@@ -51,17 +51,17 @@ let TheiaVariableContribution = class TheiaVariableContribution {
|
|
|
51
51
|
['relativeFile', [
|
|
52
52
|
{
|
|
53
53
|
name: 'currentRelativeFilePath',
|
|
54
|
-
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentRelativeFilePath', 'The
|
|
54
|
+
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentRelativeFilePath', 'The path of the currently opened file relative to its workspace root, without the root name (e.g., src/index.ts).')
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
name: '_f',
|
|
58
|
-
description: nls_1.nls.localize('theia/ai/core/variable-contribution/dotRelativePath', 'Short reference to the
|
|
58
|
+
description: nls_1.nls.localize('theia/ai/core/variable-contribution/dotRelativePath', 'Short reference to the path of the currently opened file relative to its workspace root, without the root name (\'currentRelativeFilePath\').')
|
|
59
59
|
}
|
|
60
60
|
]],
|
|
61
61
|
['relativeFileDirname', [
|
|
62
62
|
{
|
|
63
63
|
name: 'currentRelativeDirPath',
|
|
64
|
-
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentRelativeDirPath', 'The
|
|
64
|
+
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentRelativeDirPath', 'The path of the directory containing the currently opened file relative to its workspace root, without the root name (e.g., src).')
|
|
65
65
|
}
|
|
66
66
|
]],
|
|
67
67
|
['lineNumber', [{}]],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/theia-variable-contribution.ts"],"names":[],"mappings":";;;;;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,mGAAqG;AACrG,uHAAiH;AACjH,oDAAiD;AACjD,4DAAkE;AAClE,kEAAiG;AAWjG;;GAEG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAA/B;QAaH,oFAAoF;QACpF,qDAAqD;QAC3C,sBAAiB,GAAmC,IAAI,GAAG,CAAC;YAClE,CAAC,MAAM,EAAE;oBACL;wBACI,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,6DAA6D,EACnF,iDAAiD,CAAC;qBACzD;iBACJ,CAAC;YACF,CAAC,cAAc,EAAE;oBACb;wBACI,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,yDAAyD,EAC/E,+HAA+H,CAAC;qBACvI;iBACJ,CAAC;YACF,CAAC,aAAa,EAAE;oBACZ;wBACI,IAAI,EAAE,oBAAoB;wBAC1B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,wDAAwD,EAC9E,iHAAiH,CAAC;qBACzH;iBACJ,CAAC;YACF,CAAC,cAAc,EAAE;oBACb;wBACI,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,6DAA6D,EACnF,
|
|
1
|
+
{"version":3,"file":"theia-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/theia-variable-contribution.ts"],"names":[],"mappings":";;;;;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,mGAAqG;AACrG,uHAAiH;AACjH,oDAAiD;AACjD,4DAAkE;AAClE,kEAAiG;AAWjG;;GAEG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAA/B;QAaH,oFAAoF;QACpF,qDAAqD;QAC3C,sBAAiB,GAAmC,IAAI,GAAG,CAAC;YAClE,CAAC,MAAM,EAAE;oBACL;wBACI,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,6DAA6D,EACnF,iDAAiD,CAAC;qBACzD;iBACJ,CAAC;YACF,CAAC,cAAc,EAAE;oBACb;wBACI,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,yDAAyD,EAC/E,+HAA+H,CAAC;qBACvI;iBACJ,CAAC;YACF,CAAC,aAAa,EAAE;oBACZ;wBACI,IAAI,EAAE,oBAAoB;wBAC1B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,wDAAwD,EAC9E,iHAAiH,CAAC;qBACzH;iBACJ,CAAC;YACF,CAAC,cAAc,EAAE;oBACb;wBACI,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,6DAA6D,EACnF,mHAAmH,CAAC;qBAC3H;oBACD;wBACI,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,qDAAqD,EAC3E,+IAA+I,CAAC;qBACvJ;iBACJ,CAAC;YACF,CAAC,qBAAqB,EAAE;oBACpB;wBACI,IAAI,EAAE,wBAAwB;wBAC9B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,4DAA4D,EAClF,mIAAmI,CAAC;qBAC3I;iBACJ,CAAC;YACF,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B,CAAC,CAAC;IA8DP,CAAC;;aArH2B,iBAAY,GAAG,QAAQ,AAAX,CAAY;IAyDhD,iBAAiB,CAAC,OAA0B;QACxC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3D,8GAA8G;YAC9G,+FAA+F;YAC/F,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACpD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,gDAAgD;gBAC5D,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC;gBAE5D,0CAA0C;gBAC1C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAC5F,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW;wBACnG,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW;4BAChF,CAAC,CAAC,SAAG,CAAC,QAAQ,CAAC,qDAAqD,EACpE,uBAAuB,EACvB,wEAAiC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;oBAElE,uFAAuF;oBACvF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxD,MAAM,EAAE,GAAG,GAAG,2BAAyB,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC;oBAElF,OAAO,CAAC,gBAAgB,CAAC;wBACrB,EAAE;wBACF,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,cAAc;qBAC9B,EAAE,IAAI,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAES,eAAe,CAAC,OAAoC;QAC1D,6FAA6F;QAC7F,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,UAAU,CAAC,2BAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;YAChE,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,2BAAyB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7E,mDAAmD;YACnD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAoC,EAAE,OAA0B;QAC7E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,2BAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,CAAC;QACb,CAAC;QACD,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACpG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoC,EAAE,OAA0B;QAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACpG,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,CAAC;;AAtHQ,8DAAyB;AAKf;IADlB,IAAA,kBAAM,EAAC,iCAAuB,CAAC;sCACY,iCAAuB;0EAAC;AAGjD;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACY,0BAAgB;mEAAC;AAGnC;IADlB,IAAA,kBAAM,EAAC,4DAA+B,CAAC;sCACP,4DAA+B;+DAAC;oCAXxD,yBAAyB;IADrC,IAAA,sBAAU,GAAE;GACA,yBAAyB,CAuHrC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { URI } from '@theia/core';
|
|
2
|
+
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
|
3
|
+
import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves the relative paths of files in the workspace that AI features, e.g. chat variables, refer to.
|
|
6
|
+
*/
|
|
7
|
+
export declare class WorkspaceRelativePathResolver {
|
|
8
|
+
protected readonly workspaceService: WorkspaceService;
|
|
9
|
+
protected readonly fileService: FileService;
|
|
10
|
+
/**
|
|
11
|
+
* Resolves a relative path to an existing file or folder in the workspace. Besides the format of
|
|
12
|
+
* {@link WorkspaceService.getRootPrefixedPath}, it accepts the formats of paths saved by earlier versions,
|
|
13
|
+
* e.g. in chat sessions, or before the workspace roots changed: in the format of
|
|
14
|
+
* {@link WorkspaceService.resolveSupraRelativePath}, if only one of the roots contains the file, or relative to any root.
|
|
15
|
+
*
|
|
16
|
+
* @returns `undefined` if the path is absolute, leaves its root or does not resolve to an existing file or folder.
|
|
17
|
+
*/
|
|
18
|
+
resolveExistingRelativePath(relativePath: string): Promise<URI | undefined>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=workspace-relative-path-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-relative-path-resolver.d.ts","sourceRoot":"","sources":["../../src/browser/workspace-relative-path-resolver.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAQ,GAAG,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAElF;;GAEG;AACH,qBACa,6BAA6B;IAGtC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C;;;;;;;OAOG;IACG,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;CA6BpF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 STMicroelectronics and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.WorkspaceRelativePathResolver = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const core_1 = require("@theia/core");
|
|
21
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
22
|
+
const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
|
|
23
|
+
const workspace_service_1 = require("@theia/workspace/lib/browser/workspace-service");
|
|
24
|
+
/**
|
|
25
|
+
* Resolves the relative paths of files in the workspace that AI features, e.g. chat variables, refer to.
|
|
26
|
+
*/
|
|
27
|
+
let WorkspaceRelativePathResolver = class WorkspaceRelativePathResolver {
|
|
28
|
+
/**
|
|
29
|
+
* Resolves a relative path to an existing file or folder in the workspace. Besides the format of
|
|
30
|
+
* {@link WorkspaceService.getRootPrefixedPath}, it accepts the formats of paths saved by earlier versions,
|
|
31
|
+
* e.g. in chat sessions, or before the workspace roots changed: in the format of
|
|
32
|
+
* {@link WorkspaceService.resolveSupraRelativePath}, if only one of the roots contains the file, or relative to any root.
|
|
33
|
+
*
|
|
34
|
+
* @returns `undefined` if the path is absolute, leaves its root or does not resolve to an existing file or folder.
|
|
35
|
+
*/
|
|
36
|
+
async resolveExistingRelativePath(relativePath) {
|
|
37
|
+
const normalizedPath = core_1.Path.normalizePathSeparator(relativePath);
|
|
38
|
+
const path = new core_1.Path(normalizedPath).normalize();
|
|
39
|
+
const segments = path.toString().split('/').filter(segment => segment.length > 0);
|
|
40
|
+
if (path.isAbsolute || core_1.Path.isDrive(segments[0] ?? '') || segments.includes('..')) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const rootPrefixed = this.workspaceService.resolveRootPrefixedPath(normalizedPath);
|
|
44
|
+
if (rootPrefixed && await this.fileService.exists(rootPrefixed)) {
|
|
45
|
+
return rootPrefixed;
|
|
46
|
+
}
|
|
47
|
+
const supraRelative = [];
|
|
48
|
+
for (const uri of this.workspaceService.resolveSupraRelativePath(normalizedPath)) {
|
|
49
|
+
if (await this.fileService.exists(uri)) {
|
|
50
|
+
supraRelative.push(uri);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (supraRelative.length === 1) {
|
|
54
|
+
return supraRelative[0];
|
|
55
|
+
}
|
|
56
|
+
const roots = this.workspaceService.tryGetRoots();
|
|
57
|
+
for (const root of roots) {
|
|
58
|
+
const uri = root.resource.resolve(segments.join('/'));
|
|
59
|
+
if (await this.fileService.exists(uri)) {
|
|
60
|
+
return uri;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
exports.WorkspaceRelativePathResolver = WorkspaceRelativePathResolver;
|
|
67
|
+
tslib_1.__decorate([
|
|
68
|
+
(0, inversify_1.inject)(workspace_service_1.WorkspaceService),
|
|
69
|
+
tslib_1.__metadata("design:type", workspace_service_1.WorkspaceService)
|
|
70
|
+
], WorkspaceRelativePathResolver.prototype, "workspaceService", void 0);
|
|
71
|
+
tslib_1.__decorate([
|
|
72
|
+
(0, inversify_1.inject)(file_service_1.FileService),
|
|
73
|
+
tslib_1.__metadata("design:type", file_service_1.FileService)
|
|
74
|
+
], WorkspaceRelativePathResolver.prototype, "fileService", void 0);
|
|
75
|
+
exports.WorkspaceRelativePathResolver = WorkspaceRelativePathResolver = tslib_1.__decorate([
|
|
76
|
+
(0, inversify_1.injectable)()
|
|
77
|
+
], WorkspaceRelativePathResolver);
|
|
78
|
+
//# sourceMappingURL=workspace-relative-path-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-relative-path-resolver.js","sourceRoot":"","sources":["../../src/browser/workspace-relative-path-resolver.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,sCAAwC;AACxC,4DAAkE;AAClE,6EAAyE;AACzE,sFAAkF;AAElF;;GAEG;AAEI,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAQtC;;;;;;;OAOG;IACH,KAAK,CAAC,2BAA2B,CAAC,YAAoB;QAClD,MAAM,cAAc,GAAG,WAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,UAAU,IAAI,WAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChF,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;QACnF,IAAI,YAAY,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9D,OAAO,YAAY,CAAC;QACxB,CAAC;QACD,MAAM,aAAa,GAAU,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/E,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,OAAO,GAAG,CAAC;YACf,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ,CAAA;AA7CY,sEAA6B;AAGnB;IADlB,IAAA,kBAAM,EAAC,oCAAgB,CAAC;sCACY,oCAAgB;uEAAC;AAGnC;IADlB,IAAA,kBAAM,EAAC,0BAAW,CAAC;sCACY,0BAAW;kEAAC;wCANnC,6BAA6B;IADzC,IAAA,sBAAU,GAAE;GACA,6BAA6B,CA6CzC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-core",
|
|
3
|
-
"version": "1.77.0-next.
|
|
3
|
+
"version": "1.77.0-next.63+046af0812",
|
|
4
4
|
"description": "Theia - AI Core",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.77.0-next.
|
|
7
|
-
"@theia/editor": "1.77.0-next.
|
|
8
|
-
"@theia/filesystem": "1.77.0-next.
|
|
9
|
-
"@theia/monaco": "1.77.0-next.
|
|
6
|
+
"@theia/core": "1.77.0-next.63+046af0812",
|
|
7
|
+
"@theia/editor": "1.77.0-next.63+046af0812",
|
|
8
|
+
"@theia/filesystem": "1.77.0-next.63+046af0812",
|
|
9
|
+
"@theia/monaco": "1.77.0-next.63+046af0812",
|
|
10
10
|
"@theia/monaco-editor-core": "1.108.201",
|
|
11
|
-
"@theia/output": "1.77.0-next.
|
|
12
|
-
"@theia/variable-resolver": "1.77.0-next.
|
|
13
|
-
"@theia/workspace": "1.77.0-next.
|
|
11
|
+
"@theia/output": "1.77.0-next.63+046af0812",
|
|
12
|
+
"@theia/variable-resolver": "1.77.0-next.63+046af0812",
|
|
13
|
+
"@theia/workspace": "1.77.0-next.63+046af0812",
|
|
14
14
|
"@types/js-yaml": "^4.0.9",
|
|
15
15
|
"fast-deep-equal": "^3.1.3",
|
|
16
16
|
"js-yaml": "^4.3.2",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"nyc": {
|
|
59
59
|
"extends": "../../configs/nyc.json"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "046af0812516f46f2bf7ce3357cca0b672159b20"
|
|
62
62
|
}
|
|
@@ -67,6 +67,7 @@ import { DefaultPromptFragmentCustomizationService } from './frontend-prompt-cus
|
|
|
67
67
|
import { DefaultFrontendVariableService, FrontendVariableService } from './frontend-variable-service';
|
|
68
68
|
import { PromptTemplateContribution } from './prompttemplate-contribution';
|
|
69
69
|
import { FileVariableContribution } from './file-variable-contribution';
|
|
70
|
+
import { WorkspaceRelativePathResolver } from './workspace-relative-path-resolver';
|
|
70
71
|
import { TheiaVariableContribution } from './theia-variable-contribution';
|
|
71
72
|
import { TodayVariableContribution } from '../common/today-variable-contribution';
|
|
72
73
|
import { AgentsVariableContribution } from '../common/agents-variable-contribution';
|
|
@@ -168,6 +169,7 @@ export default new ContainerModule(bind => {
|
|
|
168
169
|
bind(PromptVariableContribution).toSelf().inSingletonScope();
|
|
169
170
|
bind(AIVariableContribution).toService(PromptVariableContribution);
|
|
170
171
|
bind(AIVariableContribution).to(TodayVariableContribution).inSingletonScope();
|
|
172
|
+
bind(WorkspaceRelativePathResolver).toSelf().inSingletonScope();
|
|
171
173
|
bind(AIVariableContribution).to(FileVariableContribution).inSingletonScope();
|
|
172
174
|
bind(AgentsVariableContribution).toSelf().inSingletonScope();
|
|
173
175
|
bind(AIVariableContribution).toService(AgentsVariableContribution);
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
|
|
18
|
+
let disableJSDOM = enableJSDOM();
|
|
19
|
+
import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
|
|
20
|
+
FrontendApplicationConfigProvider.set({});
|
|
21
|
+
|
|
22
|
+
import { expect } from 'chai';
|
|
23
|
+
import { URI } from '@theia/core';
|
|
24
|
+
import { OpenerService } from '@theia/core/lib/browser';
|
|
25
|
+
import { Container, injectable } from '@theia/core/shared/inversify';
|
|
26
|
+
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
|
27
|
+
import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
|
28
|
+
import { withWorkspaceServiceDefaults } from '@theia/workspace/lib/browser/test/with-workspace-service-defaults';
|
|
29
|
+
import { FileVariableContribution } from './file-variable-contribution';
|
|
30
|
+
import { WorkspaceRelativePathResolver } from './workspace-relative-path-resolver';
|
|
31
|
+
|
|
32
|
+
disableJSDOM();
|
|
33
|
+
|
|
34
|
+
@injectable()
|
|
35
|
+
class TestFileVariableContribution extends FileVariableContribution {
|
|
36
|
+
resolvePath(path: string): Promise<URI | undefined> {
|
|
37
|
+
return this.makeAbsolute(path);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
describe('FileVariableContribution path resolution', () => {
|
|
42
|
+
|
|
43
|
+
const ROOTS = ['file:///alice/app', 'file:///bob/app', 'file:///ws/theia'];
|
|
44
|
+
const FILES = ['file:///alice/app/src/a.ts', 'file:///bob/app/src/a.ts', 'file:///bob/app/src/only-bob.ts', 'file:///ws/theia/README.md'];
|
|
45
|
+
|
|
46
|
+
let roots: string[];
|
|
47
|
+
let workspaceService: WorkspaceService;
|
|
48
|
+
let contribution: TestFileVariableContribution;
|
|
49
|
+
|
|
50
|
+
before(() => {
|
|
51
|
+
disableJSDOM = enableJSDOM();
|
|
52
|
+
});
|
|
53
|
+
after(() => {
|
|
54
|
+
disableJSDOM();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
beforeEach(() => {
|
|
58
|
+
roots = ROOTS;
|
|
59
|
+
const container = new Container();
|
|
60
|
+
const fileService = { exists: async (uri: URI) => FILES.includes(uri.toString()) } as unknown as FileService;
|
|
61
|
+
workspaceService = withWorkspaceServiceDefaults({
|
|
62
|
+
tryGetRoots: () => roots.map(root => ({ resource: new URI(root), isDirectory: true }))
|
|
63
|
+
});
|
|
64
|
+
container.bind(WorkspaceService).toConstantValue(workspaceService);
|
|
65
|
+
container.bind(FileService).toConstantValue(fileService);
|
|
66
|
+
container.bind(OpenerService).toConstantValue({} as OpenerService);
|
|
67
|
+
container.bind(WorkspaceRelativePathResolver).toSelf();
|
|
68
|
+
container.bind(TestFileVariableContribution).toSelf();
|
|
69
|
+
contribution = container.get(TestFileVariableContribution);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const resolve = async (path: string): Promise<string | undefined> => (await contribution.resolvePath(path))?.toString();
|
|
73
|
+
|
|
74
|
+
it('resolves the root-prefixed path of a file in every root', async () => {
|
|
75
|
+
for (const file of FILES) {
|
|
76
|
+
expect(await resolve(workspaceService.getRootPrefixedPath(new URI(file)))).to.equal(file);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('resolves a path prefixed with a basename shared by several roots, as saved by earlier versions', async () => {
|
|
81
|
+
expect(await resolve('app/src/only-bob.ts')).to.equal('file:///bob/app/src/only-bob.ts');
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it('does not resolve a path prefixed with a basename shared by several roots that contain the file', async () => {
|
|
85
|
+
expect(await resolve('app/src/a.ts')).to.be.undefined;
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('resolves a path prefixed with a root name that the roots no longer assign', async () => {
|
|
89
|
+
// Saved as `alice/app/...` while `/bob/app` was open, too; now the root is just named `app`.
|
|
90
|
+
roots = ['file:///alice/app', 'file:///ws/theia'];
|
|
91
|
+
expect(await resolve('alice/app/src/a.ts')).to.equal('file:///alice/app/src/a.ts');
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('resolves a path without a root name, as saved by earlier versions', async () => {
|
|
95
|
+
expect(await resolve('README.md')).to.equal('file:///ws/theia/README.md');
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it('does not resolve a relative path that leaves its root', async () => {
|
|
99
|
+
FILES.push('file:///alice/secret.txt');
|
|
100
|
+
try {
|
|
101
|
+
expect(await resolve('../secret.txt')).to.be.undefined;
|
|
102
|
+
expect(await resolve('app/../../secret.txt')).to.be.undefined;
|
|
103
|
+
} finally {
|
|
104
|
+
FILES.pop();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
});
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { nls,
|
|
17
|
+
import { nls, URI } from '@theia/core';
|
|
18
18
|
import { OpenerService, codiconArray, open } from '@theia/core/lib/browser';
|
|
19
19
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
20
20
|
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
ResolvedAIContextVariable,
|
|
30
30
|
} from '../common/variable-service';
|
|
31
31
|
import { FrontendVariableService } from './frontend-variable-service';
|
|
32
|
+
import { WorkspaceRelativePathResolver } from './workspace-relative-path-resolver';
|
|
32
33
|
|
|
33
34
|
export namespace FileVariableArgs {
|
|
34
35
|
export const uri = 'uri';
|
|
@@ -55,6 +56,9 @@ export class FileVariableContribution implements AIVariableContribution, AIVaria
|
|
|
55
56
|
@inject(OpenerService)
|
|
56
57
|
protected readonly openerService: OpenerService;
|
|
57
58
|
|
|
59
|
+
@inject(WorkspaceRelativePathResolver)
|
|
60
|
+
protected readonly pathResolver: WorkspaceRelativePathResolver;
|
|
61
|
+
|
|
58
62
|
registerVariables(service: FrontendVariableService): void {
|
|
59
63
|
service.registerResolver(FILE_VARIABLE, this);
|
|
60
64
|
service.registerOpener(FILE_VARIABLE, this);
|
|
@@ -104,32 +108,9 @@ export class FileVariableContribution implements AIVariableContribution, AIVaria
|
|
|
104
108
|
}
|
|
105
109
|
|
|
106
110
|
protected async makeAbsolute(pathStr: string): Promise<URI | undefined> {
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (!path.isAbsolute) {
|
|
111
|
-
const workspaceRoots = this.wsService.tryGetRoots();
|
|
112
|
-
|
|
113
|
-
const segments = normalizedPath.split('/');
|
|
114
|
-
if (segments.length > 0) {
|
|
115
|
-
const potentialRootName = segments[0];
|
|
116
|
-
for (const root of workspaceRoots) {
|
|
117
|
-
if (root.resource.path.base === potentialRootName) {
|
|
118
|
-
const restOfPath = segments.slice(1).join('/');
|
|
119
|
-
const uri = restOfPath ? root.resource.resolve(restOfPath) : root.resource;
|
|
120
|
-
if (await this.fileService.exists(uri)) {
|
|
121
|
-
return uri;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const wsUris = workspaceRoots.map(root => root.resource.resolve(path));
|
|
128
|
-
for (const uri of wsUris) {
|
|
129
|
-
if (await this.fileService.exists(uri)) {
|
|
130
|
-
return uri;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
111
|
+
const workspaceUri = await this.pathResolver.resolveExistingRelativePath(pathStr);
|
|
112
|
+
if (workspaceUri) {
|
|
113
|
+
return workspaceUri;
|
|
133
114
|
}
|
|
134
115
|
|
|
135
116
|
const argUri = new URI(pathStr);
|
package/src/browser/index.ts
CHANGED
|
@@ -51,3 +51,4 @@ export * from '../common/language-model-service';
|
|
|
51
51
|
export * from './generic-capabilities-variable-contribution';
|
|
52
52
|
export * from './generic-capabilities-prompt-fragment-contribution';
|
|
53
53
|
export * from './prompt-variable-contribution';
|
|
54
|
+
export * from './workspace-relative-path-resolver';
|
|
@@ -72,19 +72,19 @@ export class TheiaVariableContribution implements AIVariableContribution, AIVari
|
|
|
72
72
|
{
|
|
73
73
|
name: 'currentRelativeFilePath',
|
|
74
74
|
description: nls.localize('theia/ai/core/variable-contribution/currentRelativeFilePath',
|
|
75
|
-
'The
|
|
75
|
+
'The path of the currently opened file relative to its workspace root, without the root name (e.g., src/index.ts).')
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
name: '_f',
|
|
79
79
|
description: nls.localize('theia/ai/core/variable-contribution/dotRelativePath',
|
|
80
|
-
'Short reference to the
|
|
80
|
+
'Short reference to the path of the currently opened file relative to its workspace root, without the root name (\'currentRelativeFilePath\').')
|
|
81
81
|
}
|
|
82
82
|
]],
|
|
83
83
|
['relativeFileDirname', [
|
|
84
84
|
{
|
|
85
85
|
name: 'currentRelativeDirPath',
|
|
86
86
|
description: nls.localize('theia/ai/core/variable-contribution/currentRelativeDirPath',
|
|
87
|
-
'The
|
|
87
|
+
'The path of the directory containing the currently opened file relative to its workspace root, without the root name (e.g., src).')
|
|
88
88
|
}
|
|
89
89
|
]],
|
|
90
90
|
['lineNumber', [{}]],
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { Path, URI } from '@theia/core';
|
|
18
|
+
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
19
|
+
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
|
20
|
+
import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Resolves the relative paths of files in the workspace that AI features, e.g. chat variables, refer to.
|
|
24
|
+
*/
|
|
25
|
+
@injectable()
|
|
26
|
+
export class WorkspaceRelativePathResolver {
|
|
27
|
+
|
|
28
|
+
@inject(WorkspaceService)
|
|
29
|
+
protected readonly workspaceService: WorkspaceService;
|
|
30
|
+
|
|
31
|
+
@inject(FileService)
|
|
32
|
+
protected readonly fileService: FileService;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Resolves a relative path to an existing file or folder in the workspace. Besides the format of
|
|
36
|
+
* {@link WorkspaceService.getRootPrefixedPath}, it accepts the formats of paths saved by earlier versions,
|
|
37
|
+
* e.g. in chat sessions, or before the workspace roots changed: in the format of
|
|
38
|
+
* {@link WorkspaceService.resolveSupraRelativePath}, if only one of the roots contains the file, or relative to any root.
|
|
39
|
+
*
|
|
40
|
+
* @returns `undefined` if the path is absolute, leaves its root or does not resolve to an existing file or folder.
|
|
41
|
+
*/
|
|
42
|
+
async resolveExistingRelativePath(relativePath: string): Promise<URI | undefined> {
|
|
43
|
+
const normalizedPath = Path.normalizePathSeparator(relativePath);
|
|
44
|
+
const path = new Path(normalizedPath).normalize();
|
|
45
|
+
const segments = path.toString().split('/').filter(segment => segment.length > 0);
|
|
46
|
+
if (path.isAbsolute || Path.isDrive(segments[0] ?? '') || segments.includes('..')) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const rootPrefixed = this.workspaceService.resolveRootPrefixedPath(normalizedPath);
|
|
50
|
+
if (rootPrefixed && await this.fileService.exists(rootPrefixed)) {
|
|
51
|
+
return rootPrefixed;
|
|
52
|
+
}
|
|
53
|
+
const supraRelative: URI[] = [];
|
|
54
|
+
for (const uri of this.workspaceService.resolveSupraRelativePath(normalizedPath)) {
|
|
55
|
+
if (await this.fileService.exists(uri)) {
|
|
56
|
+
supraRelative.push(uri);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (supraRelative.length === 1) {
|
|
60
|
+
return supraRelative[0];
|
|
61
|
+
}
|
|
62
|
+
const roots = this.workspaceService.tryGetRoots();
|
|
63
|
+
for (const root of roots) {
|
|
64
|
+
const uri = root.resource.resolve(segments.join('/'));
|
|
65
|
+
if (await this.fileService.exists(uri)) {
|
|
66
|
+
return uri;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
}
|